我正在尝试建立一种机制,使用户可以将项目保存到收藏夹(这是一个数组),然后将其保存到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)
答案 0 :(得分:3)
如评论中所述: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]
}