arrays - 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)
解决方案
正如评论中的一些人所说: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]
}
推荐阅读
- flutter - Flutter:如何根据存储在 sharedPreference 中的用户或管理员获取数据显示 DrawerWidget?
- vue.js - 当我关闭表单对话框并重新打开时,表单仍然是红色且未初始化。
- reactjs - Firebase Firestore 模拟器错误`主机已在 settings() 和 useEmulator() 中设置,将使用模拟器主机`
- python - 为什么 pd.concat 中的列和值数据会丢失?
- r - 如何使用 rlang 代词而不产生错误 - .data
- python - Pytorch ValueError: Expected target size (2, 13),在调用 CrossEntropyLoss 时得到了 torch.Size([2])
- python - 如何将错误添加到特定命令 discord.py
- javascript - React-Native:带有 if 语句的 Flatlist
- ios - Dart 颤振 Admob 在 Ios 中不起作用。我大约 1 周前发布了我的应用程序
- c++ - 间接需要指针操作数错误