[swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.
소개
userDefaults를 사용하여 tableView에 표시된 기사를 저장하는 기능을 구현할 기회가 있었으므로 비망록으로 올립니다.

거친 흐름
1.tableView 표시(즐겨찾기 버튼 포함)
2. 즐겨찾기 버튼 탭시 셀번째를 획득.
2-2. 탭한 셀이 가지는 Dic를, 빈 선언한 배열에 납입
2-3. 배열을 userDefaults에 설정합니다.
3. 다른 View에서 userDefaults에서 꺼내 tableView로 표시.
1.tableView 표시(즐겨찾기 버튼 포함)
PropertyList.plist
를 만들고 tableView에 표시합니다.

class TableViewController: UIViewController {
@IBOutlet weak var TableView: UITableView!
let ud : UserDefaults = UserDefaults.standard
var favoriteListArr :[[String : String]]=[[:]]
var plistArr = [Dictionary<String, String>]()
override func viewDidLoad() {
super.viewDidLoad()
let path = Bundle.main.path(forResource: "PropertyList", ofType: "plist")
plistArr = NSArray(contentsOfFile: path!) as! [Dictionary<String, String>]
}
}
extension TableViewController: UITableViewDataSource , UITableViewDelegate {
//行数指定
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return plistArr.count
}
//表示内容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.Title.text = plistArr[indexPath.row]["title"]
return cell
}
}
2. 즐겨찾기 버튼 탭시 셀번째를 획득.
//最上部の画像に登場する星型の黄色ボタン
@IBAction func favoriteYellowBtn(_ sender: Any) {
let btn = sender as! UIButton
//タップした星型の黄色ボタンの行数とセルの行数が一致させる
let cell = btn.superview?.superview as! TableViewCell
//星型ボタンタップ時のセル番目を獲得
let tappedRow = TableView.indexPath(for: cell)?.row
let tableViewSelected = plistArr[tappedRow!]
//タップしたセルが持つ辞書型を、空宣言した配列に格納
favoriteListArr.append(tableViewSelected)
//その配列をuserDefaultsに、セットする。
ud.set(favoriteListArr as! Array, forKey: "favoriteListArr")
ud.synchronize()
}
3. 다른 View에서 userDefaults에서 꺼내 tableView로 표시.
import UIKit
class FavoriteTableViewController: UIViewController {
let ud : UserDefaults = UserDefaults.standard
var favoriteListArr : Array<[String : Any]> = []
override func viewDidLoad() {
super.viewDidLoad()
if var favorites = ud.array(forKey: "favoriteListArr") as! Array?{
favorites.removeFirst()
favoriteListArr = favorites as! Array<[String : Any]>
}
}
extension FavoriteTableViewController : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return favoriteListArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UITableViewCell
var favoriteListArrText = (self.favoriteListArr[indexPath.row] as! [String : String])["title"]
cell.textLabel?.text = favoriteListArrText
return cell
}
}
결론
Xcode씨로부터,type any has no subscript members
그리고 잘 화가났다. 형식 선언은 제대로 합니다. m(__)m
더 좋은 쓰는 방법이 있습니다! 등 있으면, 지적 부탁드립니다 m (__) m
Reference
이 문제에 관하여([swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/under_chilchil/items/aa9ce5b840ff6de274e7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
PropertyList.plist
를 만들고 tableView에 표시합니다.
class TableViewController: UIViewController {
@IBOutlet weak var TableView: UITableView!
let ud : UserDefaults = UserDefaults.standard
var favoriteListArr :[[String : String]]=[[:]]
var plistArr = [Dictionary<String, String>]()
override func viewDidLoad() {
super.viewDidLoad()
let path = Bundle.main.path(forResource: "PropertyList", ofType: "plist")
plistArr = NSArray(contentsOfFile: path!) as! [Dictionary<String, String>]
}
}
extension TableViewController: UITableViewDataSource , UITableViewDelegate {
//行数指定
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return plistArr.count
}
//表示内容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomCell
cell.Title.text = plistArr[indexPath.row]["title"]
return cell
}
}
2. 즐겨찾기 버튼 탭시 셀번째를 획득.
//最上部の画像に登場する星型の黄色ボタン
@IBAction func favoriteYellowBtn(_ sender: Any) {
let btn = sender as! UIButton
//タップした星型の黄色ボタンの行数とセルの行数が一致させる
let cell = btn.superview?.superview as! TableViewCell
//星型ボタンタップ時のセル番目を獲得
let tappedRow = TableView.indexPath(for: cell)?.row
let tableViewSelected = plistArr[tappedRow!]
//タップしたセルが持つ辞書型を、空宣言した配列に格納
favoriteListArr.append(tableViewSelected)
//その配列をuserDefaultsに、セットする。
ud.set(favoriteListArr as! Array, forKey: "favoriteListArr")
ud.synchronize()
}
3. 다른 View에서 userDefaults에서 꺼내 tableView로 표시.
import UIKit
class FavoriteTableViewController: UIViewController {
let ud : UserDefaults = UserDefaults.standard
var favoriteListArr : Array<[String : Any]> = []
override func viewDidLoad() {
super.viewDidLoad()
if var favorites = ud.array(forKey: "favoriteListArr") as! Array?{
favorites.removeFirst()
favoriteListArr = favorites as! Array<[String : Any]>
}
}
extension FavoriteTableViewController : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return favoriteListArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UITableViewCell
var favoriteListArrText = (self.favoriteListArr[indexPath.row] as! [String : String])["title"]
cell.textLabel?.text = favoriteListArrText
return cell
}
}
결론
Xcode씨로부터,type any has no subscript members
그리고 잘 화가났다. 형식 선언은 제대로 합니다. m(__)m
더 좋은 쓰는 방법이 있습니다! 등 있으면, 지적 부탁드립니다 m (__) m
Reference
이 문제에 관하여([swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/under_chilchil/items/aa9ce5b840ff6de274e7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//最上部の画像に登場する星型の黄色ボタン
@IBAction func favoriteYellowBtn(_ sender: Any) {
let btn = sender as! UIButton
//タップした星型の黄色ボタンの行数とセルの行数が一致させる
let cell = btn.superview?.superview as! TableViewCell
//星型ボタンタップ時のセル番目を獲得
let tappedRow = TableView.indexPath(for: cell)?.row
let tableViewSelected = plistArr[tappedRow!]
//タップしたセルが持つ辞書型を、空宣言した配列に格納
favoriteListArr.append(tableViewSelected)
//その配列をuserDefaultsに、セットする。
ud.set(favoriteListArr as! Array, forKey: "favoriteListArr")
ud.synchronize()
}
import UIKit
class FavoriteTableViewController: UIViewController {
let ud : UserDefaults = UserDefaults.standard
var favoriteListArr : Array<[String : Any]> = []
override func viewDidLoad() {
super.viewDidLoad()
if var favorites = ud.array(forKey: "favoriteListArr") as! Array?{
favorites.removeFirst()
favoriteListArr = favorites as! Array<[String : Any]>
}
}
extension FavoriteTableViewController : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return favoriteListArr.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! UITableViewCell
var favoriteListArrText = (self.favoriteListArr[indexPath.row] as! [String : String])["title"]
cell.textLabel?.text = favoriteListArrText
return cell
}
}
결론
Xcode씨로부터,type any has no subscript members
그리고 잘 화가났다. 형식 선언은 제대로 합니다. m(__)m
더 좋은 쓰는 방법이 있습니다! 등 있으면, 지적 부탁드립니다 m (__) m
Reference
이 문제에 관하여([swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/under_chilchil/items/aa9ce5b840ff6de274e7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([swift3.0] UserDefaults를 사용하여 tableview에 표시되는 셀의 내용을 저장하는 기능을 만듭니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/under_chilchil/items/aa9ce5b840ff6de274e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)