我在将保存的数据从第一个VC发送到第二个VC时遇到问题,因此它会在viewDidLoad()
上显示。
它可以完成所有操作,但如果我重新启动应用程序,它不会显示日期。
例如第一个VC:
@IBAction func btnEg(sender: AnyObject) {
string = label.text;
date = NSDateFormatter.localizedStringFromDate(NSDate(),
dateStyle: NSDateFormatterStyle.MediumStyle,
timeStyle: NSDateFormatterStyle.ShortStyle);
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let statistikvc: StatistikViewController = segue.destinationViewController as! StatistikViewController
if (self.Count > 0) {
statistikvc.date = date
statistikvc.save(self.date)
}
}
第二个ViewController:
var date = String();
func save(a: AnyObject?){
defaults.setObject(a,forKey:"date")
}
override func viewDidLoad() {
super.viewDidLoad()
if let _ = defaults.objectForKey("date") as? String {
self.txtDate.text = defaults.objectForKey("date") as? String
}
txtDate.text = date;
}
答案 0 :(得分:1)
您在save
功能中错过了对defaults.synchronize()
的来电。没有它,数据实际上并未存储。
应该是:
func save(a: AnyObject?){
defaults.setObject(a,forKey:"date")
defaults.synchronize()
}
您可能需要在viewDidLoad
中切换两个语句:
txtDate.text = date;
if let _ = defaults.objectForKey("date") as? String {
self.txtDate.text = defaults.objectForKey("date") as? String
}
请注意,这会变得混乱。你在这里混合两种不同的技术。您应始终使用移交date
或始终使用默认存储。