我是iOS编程的新手,我试图从用户默认值中获取值。
我有一些偏好,我试图在viewDidLoad()
函数中的视图controller.swift上获取它们。
这是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
let strName : NSString = defaults.objectForKey("name_preferences") as NSString
let strEmail : NSString = defaults.objectForKey("mail_preferences") as NSString
let strUser : NSString = defaults.objectForKey("user_preferences") as NSString
让strName崩溃,告诉我:"fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)"
我原以为是因为没有任何默认值,所以我输入了它。但它仍然失败。
任何人都可以帮助我吗?
答案 0 :(得分:1)
这意味着在您的用户默认值中找不到strName。 试试这个:
let var0 = defaults.objectForKey("key0") as? NSString
let var1 = defaults.objectForKey("key1") as? NSString
let var2 = defaults.objectForKey("key2") as? NSString //... and so on
if let strName = var0 {
//use strName
}
if let strEmail = var1 {
//use strEmail
}
如果所有这些必须存在于用户默认值中,以使代码正常运行,则可以嵌套if let
检查。如果没有,您应该对那些可以为nil的值使用条件。
您应该对用户默认设置中的所有内容执行此操作,因为您无法确定密钥的对象类型始终是正确的。
编辑:
说明:as
关键字用于类型转换。
你可以阅读它here。
as?
强制转换为可选项,因此如果使用as?
将值转换为类型,则代码仍然有效,如果值为nil或无法转换。您可以稍后使用if let
语句检查选项,以查看它们是否为零或包含值。