UserDefaults无法正确检索我的字符串数组

时间:2018-06-24 12:41:04

标签: arrays swift nsuserdefaults

我正在尝试建立一种机制,使用户可以将项目保存到收藏夹(这是一个数组),然后将其保存到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)

1 个答案:

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