gpt4 book ai didi

ios - 将变量与 UserDefaults 同步的正确方法

转载 作者:搜寻专家 更新时间:2023-11-01 06:15:09 25 4
gpt4 key购买 nike

我想在设置值时直接与 UserDefaults 保持变量同步。我是这样做的:

var userId: String {
get {
return UserDefaults.standard.string(forKey: kUserIdKey) ?? ""
}
set {
UserDefaults.standard.set(newValue, forKey: kUserIdKey)
}
}

它工作正常,但这样做是否正确?

如果是这样,Array 呢?

var tagsList: [Int] {
get {
return (UserDefaults.standard.object(forKey: kTagsList) as? [Int]) ?? [Int]()
}
set {
UserDefaults.standard.set(newValue, forKey: kTagsList)
}
}

如果我添加一个元素 tagsList.append(0),新值是否存储在 UserDefaults 中?

更新

这是我在 Playground 上拥有的东西: enter image description here

最佳答案

简短回答:是的。

长答案:数组和字符串是 Swift 中的 struct,它们在发生变异时语义上会生成一个全新的副本。

因此,setter 中的 newValue 是您对数组应用的任何变异的结果数组,无论它是 append 还是其他变异函数。

您可以像这样在 playground 中轻松验证此行为:

var array: [Int] {
get { return [1, 2, 3] }
set { print(newValue) }
}

array.append(4)
// Prints [1, 2, 3, 4]

关于ios - 将变量与 UserDefaults 同步的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805344/

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