UserDefaults 无法正确检索我的字符串数组
UserDefaults won't retrieve my string array correctly
我正在尝试建立一种机制,让用户将项目保存到收藏夹(这是一个数组),然后将其保存到 UserDefaults,但我似乎无法让它正确地写入 UD。在下面的示例中打印 UDSaved returns [],即使我只是将一个元素附加到数组。
有谁知道我做错了什么吗?
是语法错误,我没有正确检索还是我的逻辑有问题?
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
let UDSaved = UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]()
favouritesArray.append("element")
UDWrite()
print(UDSaved)
正如评论中的一些人所说:UDSaved
永远不会更新。我的解决方案是使 UDSaved
成为如下函数:
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
func UDSaved() -> [String] {return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]}()
favouritesArray.append("element")
UDWrite()
print(UDSaved())
或者您可以将其设为计算值 属性
var UDSaved: [String] {
return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]
}
我正在尝试建立一种机制,让用户将项目保存到收藏夹(这是一个数组),然后将其保存到 UserDefaults,但我似乎无法让它正确地写入 UD。在下面的示例中打印 UDSaved returns [],即使我只是将一个元素附加到数组。
有谁知道我做错了什么吗?
是语法错误,我没有正确检索还是我的逻辑有问题?
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
let UDSaved = UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]()
favouritesArray.append("element")
UDWrite()
print(UDSaved)
正如评论中的一些人所说:UDSaved
永远不会更新。我的解决方案是使 UDSaved
成为如下函数:
var favouritesArray: [String] = []
func UDWrite() {UserDefaults.standard.set(favouritesArray, forKey: "UDfavouritesArray")}
func UDSaved() -> [String] {return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]}()
favouritesArray.append("element")
UDWrite()
print(UDSaved())
或者您可以将其设为计算值 属性
var UDSaved: [String] {
return UserDefaults.standard.stringArray(forKey: "UDfavouritesArray") ?? [String]
}