首页 > 解决方案 > UserDefaults 不会正确检索我的字符串数组

问题描述

我正在尝试创建一种机制,让用户将项目保存到收藏夹(这是一个数组),然后将其保存到 UserDefaults,但是我似乎无法让它正确写入 UD。在下面的示例中打印 UDSaved 会返回 [],即使我只是在数组中添加了一个元素。

有谁知道我做错了什么?

是语法错误,我没有正确检索,还是我的逻辑有问题?

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)

标签: arraysswiftnsuserdefaults

解决方案


正如评论中的一些人所说: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]
}

推荐阅读