如何在swift 5中处理userdefault可能的nil值存储?

问题描述 投票:0回答:1

我想在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"

请建议是更好的处理方式。

ios swift nsuserdefaults
1个回答
0
投票

如果你想把可选的存储在 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 ?? ""

编辑:在你的情况下,你没有得到一个。fcmTockenString? (可选字符串),这样你就不必再进行 nil coalescing. 如果你必须提供 appFcmToken = nil 我提供的是上面的代码。

© www.soinside.com 2019 - 2024. All rights reserved.