我在这行代码中声明了一个常量,但是如果我不输入`!之后,xXcode给出错误提示:
可选类型字符串的值必须解包。
为什么Xcode认为这是可选的?我只是声明一个String
类型的常量,并将其分配给用户将在设置部分中设置的键。
也许是因为我正在使用UserDefault
设置,但尚未设置吗?如果是这样,我该如何解决?
let jbEmail: String = userDefaults.string(forKey: "JBemail_preference")!
答案 0 :(得分:1)
请参阅 /*
list=['a','b']
list=[]
list=""
*/
${empty list}//false
${empty list1}//true
${empty list2}//true
的文档。返回类型为UserDefaults string(forKey:)
。它返回一个可选值,因为给定键可能没有值。
因此,尝试将String?
分配给String?
会导致错误。强制解包(添加String
)可以解决该错误,但这是最糟糕的解决方案,因为如果密钥没有任何值,那么您的应用将崩溃。
您应该正确处理!
中的键没有值的情况。
您可以分配默认值:
UserDefaults
或者您可以有条件地处理没有价值的事情:
let jbEmail = userDefaults.string(forKey: "JBemail_preference") ?? "Some Default"