我想在userdefault中存储字符串值,这个值可能是nil。
目前我的做法是
var appFcmToken: String {
get {
if let appFcmToken = UserDefaults.standard.object(forKey: "appFcmToken") as? String {
return appFcmToken
} else {
return ""
}
}
set {
UserDefaults.standard.set(newValue, forKey: "appFcmToken")
UserDefaults.standard.synchronize()
}
}
但在这种情况下,它将给出错误,我将得到nil值。 appFcmToken = nil
才会 appFcmToken = "some string"
请建议是更好的处理方式。
如果你想把可选的存储在 appFcmToken
就这样做。
var appFcmToken: String? {
get {
UserDefaults.standard.object(forKey: "appFcmToken") as? String
}
set {
UserDefaults.standard.set(newValue, forKey: "appFcmToken")
UserDefaults.standard.synchronize()
}
}
在设置的地方 appFcmToken
添加 nil coalescing
如果你想避免存储nil,而选择用一个空字符串代替 nil
:
appFcmToken = fcmTocken ?? ""
编辑:在你的情况下,你没有得到一个。fcmTocken
的 String?
(可选字符串),这样你就不必再进行 nil coalescing
. 如果你必须提供 appFcmToken = nil
我提供的是上面的代码。