NSUserDefaults在Swift中松开值

亨利·F

更新:我尝试将setValue更改为setObject,并且发生了相同的错误。在进一步研究断点和LLDB之前,它们甚至在控制器出现之前都为零。我没有正确保存它们。

我正在尝试简单地保存几个文本字符串,并使用Swift将它们显示在另一个视图上。我不确定为什么会遇到这么麻烦。这是我尝试完成的方法:VC1

@IBAction func registerTapped(sender : AnyObject) 
        // Save the login information

        let defaults = NSUserDefaults.standardUserDefaults()

        defaults.setValue(username.text, forKey: "username")
        defaults.setValue(password.text, forKey: "password")


        if firstName.text.isEmpty == false {
            defaults.setValue(firstName.text, forKey: "firstname")
        }

        if lastName.text.isEmpty == false {
            defaults.setValue(lastName.text, forKey: "lastname")
        }

        let profileView = ProfileViewController()
        self.presentViewController(profileView, animated: true, completion: nil)
    }
}

凉爽的。根据我的研究,这似乎是将字符串保存在UITextFields中的正确方法。因此,我打开VC2并尝试将保存的文本加载到新的UITextField中,如下所示:

override func viewDidLoad() {
        super.viewDidLoad()

        let defaults = NSUserDefaults.standardUserDefaults()

        username.text = defaults.stringForKey("username")
        password.text = defaults.stringForKey("password")

        if let first = defaults.stringForKey("firstname")
        {
            firstName.text = first
        }
        if let last = defaults.stringForKey("lastname") {
            lastName.text = last
        }
}

我崩溃了fatal error: unexpectedly found nil while unwrapping an Optional value我已经花了几个小时来研究教程,但终生无法弄清自己做错了什么。

是因为它是可选的吗?这是我的LLDB输出:在此处输入图片说明

dervenhesse

你的问题没有任何关系NSUserDefaults,什么nil是你的标签usernamepassword等你的第二个控制器。

您应该在按钮(带有的按钮registerTapped)上添加一个序号,以显示第二个控制器,并删除中的最后两行registerTapped

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章