Swift 2在第一个VC中保存dateValue并在第二个VC中加载

时间:2015-12-27 17:15:29

标签: ios swift swift2

我在将保存的数据从第一个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;
}

1 个答案:

答案 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始终使用默认存储。

相关问题