0
我有一個快速編碼問題。首先,我使用XCode 8和Swift 2.這是我的視圖控制器的快速圖像,因此您可以獲得更好的主意。 Image of my viewcontrollerUITableView中的NSUserDefaults和持久性
在上圖中,您將一個目標(文本插入文本字段)並按提交。提交按鈕(「提交目標」)將文本字段中的文本插入到數組中。這個數組然後顯示在tableview中。
我的問題是,我如何實現NSUserDefualts到這個viewcontroller來保存數組?如果用戶從tableview中刪除一個目標,這也需要能夠更新數組。
這裏是我此刻的視圖 - 控制代碼:
//
// 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嗎? –