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]
}