arrays - 在不删除原始 UserDefault 信息的情况下将数组附加到 UserDefaults
问题描述
所以我正在制作一个附加对象数组。我的问题是我想添加对象而不删除原始对象。一旦我附加了对象,我就会看到它们。但是当我添加新对象时,旧对象消失了,取而代之的是旧对象。如何通过 NSUserDefaults 保持两者?
到目前为止,我做了很多研究,还没有发现任何东西。
case 0:
self.array.append("Instagram")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 1:
self.array.append("Snapchat")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 2:
self.array.append("VSCO")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 3:
self.array.append("Pinterest")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 4:
self.array.append("Tiktok")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 5:
self.array.append("Twitter")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 6:
self.array.append("Facebook")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 7:
self.array.append("Google")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 8:
self.array.append("Flickr")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 9:
self.array.append("iFunny")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 10:
self.array.append("Tumblr")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 11:
self.array.append("Viber")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 12:
self.array.append("Vine")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
case 13:
self.array.append("WhatsApp")
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
default:
print("Error")
print(self.array)
没有错误信息
解决方案
确保self.array
使用来自 UserDefaults 的当前值加载。然后您可以更新数组,然后使用更新后的数组更新 UserDefaults。
在一些适当的初始化期间:
self.array = UserDefaults.standard.array(forKey: "addedAccounts") as? [String] ?? []
然后你的switch
:
var newVal: String?
switch whatever {
case 0: newVal = "Instagram"
case 1: newVal = "Snapchat"
// and the rest
}
if let newVal = newVal {
self.array.append(newVal)
UserDefaults.standard.set(self.array, forKey: "addedAccounts")
}
switch
顺便说一句 -用一组帐户名称替换它会简单得多。
推荐阅读
- c++ - 如何使用 ROS tf 侦听器获取转换并将其应用于我的速度数据?
- php - 特殊字符敏感sql查询
- python - 线程中的 PIL.ImageGrab 、 grab() 和 load() 函数
- javascript - AWS Lambda 处理程序中是否需要回调?
- forms - 是的,一起验证数组中的字段
- sql-server - 使用 SQL server 2017,如何将浮点数(IEEE754 单精度 32 位)转换为二进制?
- swiftui - SwiftUI 中带有嵌套视图的上下文菜单
- javascript - Javascript按类删除动态创建的iframe元素?
- firebase - 如何在 Flutter 中禁用 Firebase 为 Web 自动生成 UUID
- web-scraping - 从电子商务网站上抓取产品页面