gpt4 book ai didi

swift - 如果在 Swift 中可选为 nil,则初始化非可选 var 的最佳方法

转载 作者:可可西里 更新时间:2023-10-31 23:57:30 28 4
gpt4 key购买 nike

我想通过从 UserDefaults 中获取它来初始化一个变量 obj,它返回一个 String?,如果它是 nil 构建值并分配它。

下面的代码有效,但最后,我的 obj 是一个 String? 而我希望它是一个 String (因为在这个阶段它不能是nil)。

var obj = UserDefaults.standard.string(forKey: "my_key")// Here, obj is a String?
if obj == nil {
obj = ProcessInfo.processInfo.globallyUniqueString// Returns, a String
defaults.set(obj, forKey: "my_key")
defaults.synchronize()
}
// Here, obj is still a String?

对于这种情况是否有好的模式/最佳实践?

最佳答案

您可以使用 nil-coalescing 运算符 ??“立即评估关闭”:

let obj = UserDefaults.standard.string(forKey: "my_key") ?? {
let obj = ProcessInfo.processInfo.globallyUniqueString
UserDefaults.standard.set(obj, forKey: "my_key")
return obj
}()

print(obj) // Type is `String`

如果未设置用户默认值,则执行闭包。闭包创建并设置用户默认值(使用 local obj变量)并将其返回给调用者,以便它被分配给外部 obj 变量。

关于swift - 如果在 Swift 中可选为 nil,则初始化非可选 var 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46935178/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com