我希望用户NSUserDefaults
通过单击按钮将当前日期(如dd.mm.yyyy)保存到,然后将其重新加载到另一个中,ViewController
以将其显示为中的单元格UITableView
。但这是行不通的。我不知道如何正确安排日期,但这是我尝试的方法:
@IBAction func saveButtonTapped (sender:AnyObject){
let userDefaults = NSUserDefaults.standardUserDefaults()
if var timeList = userDefaults.objectForKey("timeList") as? [NSDate]
{
timeList.append(NSDate())
userDefaults.setObject(timeList, forKey: "timeList")
}
else
{
userDefaults.setObject([NSDate()], forKey: "timeList")
}
userDefaults.synchronize()
}
...
@IBOutlet weak var tableView: UITableView!
var time:NSMutableArray = NSMutableArray();
override func viewDidLoad() {
super.viewDidLoad()
var timecopy = NSMutableArray(array: time)
var userDefaults:NSUserDefaults = NSUserDefaults.standardUserDefaults()
var timeListFromUserDefaults:NSMutableArray? = userDefaults.objectForKey("timeList") as? NSMutableArray
if ((timeListFromUserDefaults) != nil){
time = timeListFromUserDefaults!
}
self.tableView.reloadData()
}
妳去
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
let userDefaults = NSUserDefaults.standardUserDefaults()
let timeListKey = "TimeList" // Key in user defaults
var timeList: [NSDate] = [NSDate]() {
didSet {
userDefaults.setObject(self.timeList, forKey: timeListKey)
self.tableView.reloadData()
}
}
//MARK: Actions
@IBAction func saveButtonTapped(sender: UIButton) {
self.timeList.append(NSDate())
}
//MARK: TableView DataSource
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.timeList.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "TimeListCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = "\(timeList[indexPath.row])"
return cell
}
//MARK: View Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
// Get NSArray from userDefaults
let timeListFromUserDefaults = userDefaults.objectForKey(timeListKey) as? NSArray
// Check if it is an array of NSDate, else set timeList to empty array
self.timeList = (timeListFromUserDefaults as? [NSDate]) ?? [NSDate]()
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句