###前提・実現したいこと
質問をご覧いただきまして、ありがとうございます。
構造体に格納したデータを、NSUserDefaultsを使用して保存したり、再起動時に保存したデータの呼び出しが出来る機能を実装したいのですが、上手く実装できずに悩んでいます。
自分でも調べてみたところ、NSUserDefaultsはObjectしか使用できないとのことだったので、NSDictionaryに変換するか、クラスを作成してObject化する方法がいいのではないかと思い、下記URLの内容を参考にして実装を試みたのですがなかなか上手く実装できず、ご質問させていただきました。
参照したURL
http://qiita.com/lovee/items/2b39e1c54d6d00adead9
どなたか、よい方法があればご教示いただきたく存じます。
よろしくお願いいたします。
以下にソースコードを付します。
保存したいのは、SecondViewController内のstruct[goal]の内容です。
###ソースコード
ViewController.swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var goalTableView: UITableView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } override func viewWillAppear(animated: Bool) { goalTableView.reloadData(); } func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { if(editingStyle == UITableViewCellEditingStyle.Delete) { goalMgr.goals.removeAtIndex(indexPath.row) goalTableView.reloadData(); } } func tableView(tableView: UITableView, numberOfRowsInSection section: Int)->Int{ return goalMgr.goals.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)->UITableViewCell{ let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "goal") cell.textLabel?.text = goalMgr.goals[indexPath.row].title cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator return cell } }
SecondViewController.swift
import UIKit var goalMgr: GoalManager = GoalManager() //構造体 struct goal { var title: String } class titleObject{ var title: String init(object: goal){ self.title = object.title } } class GoalManager: ViewController { var goals = [goal]() func addGoal(title: String){ goals.append(goal(title: title)) } } class SecondViewController: UIViewController { @IBOutlet var txtGoal: UITextView! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBAction func btnAddGoal(sender: UIBarButtonItem){ goalMgr.addGoal(txtGoal.text!) self.view.endEditing(true) self.navigationController?.popToRootViewControllerAnimated(true) } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?){ self.view.endEditing(true) } }
長文になってしまい、申し訳ございません。
ご回答お待ちしております。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/02 23:28