私は迅速なコーディングに関する質問があります。最初に、私はXCode 8とswift 2を使用しています。ここで私のviewcontrollerの簡単なイメージですので、より良いアイデアを得ることができます。 Image of my viewcontrollerNSUserDefaultsとUITableViewの永続性
上記の画像では、目標(テキストフィールドにテキスト)を挿入してsubmitを押します。送信ボタン( "Submit Goal")は、テキストフィールドのテキストを配列に挿入します。この配列は、tableviewに表示されます。
私の質問は、このビューコントローラにNSUserDefualtsを実装して配列を保存するにはどうすればいいですか?また、ユーザーがテーブルビューからゴールの1つを削除した場合、配列を更新できる必要があります。ここで
は、現時点でのViewControllerのために私のコードです:
//
// VCWeeklyGoals.swift
// FitNote
//
// Created by ---- on 9/21/16.
// Copyright © 2016 Haiden Stiles. All rights reserved.
//
import UIKit
class VCWeeklyGoals: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
//MARK: Properties
//DATE AND TIME
@IBOutlet weak var labelDate: UILabel!
var timer = NSTimer()
@objc func tick() {
labelDate.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .MediumStyle)
}
//END DATE AND TIME
//BEGINNING ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
//@IBOutlet weak var roundedButtonMonday: UIButton!
//ROUNDED BUTTON FOR SUBMIT GOAL
@IBOutlet weak var roundedButtonSubmitGoal: UIButton!
//END ROUNDED BUTTON FOR SUBMIT GOAL
//END ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
//BEGINNING OF TABLE FUNCTIONS AND PROPERTIES
@IBOutlet var tableView: UITableView!
@IBOutlet var insertedGoal: UITextField!
//var tableTitles = NSUserDefaults.standardUserDefaults().arrayForKey("tableTitles") as! [String]
var tableTitles = [String]()
@IBAction func buttonSubmitGoal(sender: UIButton) {
self.view.endEditing(true)
var error = ""
if insertedGoal.text == "" {
error = "Please enter a goal!"
} else {
tableTitles.append(insertedGoal.text!)
self.tableView.reloadData()
}
if error != "" {
let alert = UIAlertController(title:"Error In Form", message: error, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title:"OK", style: .Default, handler: { action in
//self.dismissViewControllerAnimated(true, completion:nil)
}))
self.presentViewController(alert, animated:true, completion:nil)
}
insertedGoal.text = ""
}
//func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// return 1
//}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableTitles.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
let object = tableTitles[indexPath.row]
cell.textLabel!.text = object
return cell
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
tableTitles.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
//END OF TABLE FUNCTIONS AND PROPERTIES
//OVERRIDE FUNCTIONS
override func viewDidLoad() {
super.viewDidLoad()
if let temp = NSUserDefaults.standardUserDefaults().objectForKey("tableTitles") as? [String] {
tableTitles = temp
}
// Do any additional setup after loading the view.
//TABLE PROPERTIES
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.insertedGoal.delegate = self
tableView.delegate = self
tableView.dataSource = self
//END TABLE PROPERTIES
//DATE PROPERTIES
timer = NSTimer.scheduledTimerWithTimeInterval(1.0,
target: self,
selector: #selector(tick),
userInfo: nil,
repeats: true)
//END DATE PROPERTIES
//ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
//MONDAY
//roundedButtonMonday.backgroundColor = UIColor.whiteColor()
//roundedButtonMonday.layer.cornerRadius = 6
//roundedButtonMonday.layer.borderWidth = 0.5
//roundedButtonMonday.layer.borderColor = UIColor.blueColor().CGColor
//ROUNDED BUTTON FOR SUBMIT GOAL
roundedButtonSubmitGoal.backgroundColor = UIColor.clearColor()
roundedButtonSubmitGoal.layer.cornerRadius = 7
roundedButtonSubmitGoal.layer.borderWidth = 1
roundedButtonSubmitGoal.layer.borderColor = UIColor.blueColor().CGColor
//END ROUNDED BUTTON FOR SUBMIT GOAL
//END ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
//DATE PICKER
//END DATE PICKER
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
データを保存するために、 'NSUserDefaults'を使用しないでください役に立てば幸いでシンプルな細胞です。それはその目的ではありません。 'NSArray'のメソッドを使って配列をファイルに書き出します。 – rmaddy
私はNSArrayを見ていましたが、私はそれで進歩していないように感じました... NSArrayを実装する正しい方向に私を助けてくれますか? –