更新:我尝试将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输出:
你的问题没有任何关系NSUserDefaults
,什么nil
是你的标签username
,password
等你的第二个控制器。
您应该在按钮(带有的按钮registerTapped
)上添加一个序号,以显示第二个控制器,并删除中的最后两行registerTapped
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句