swift - 通过 INDEX 更新和删除 userDefaults 中的对象
问题描述
我创建了 3 个对象并将每个对象保存在用户默认值中,我如何才能更新并非所有数据,只有对象编号 3?
这是我如何保存和获取数据的代码:
func savePlayer(player: [Player]) {
UserDefaults.standard.set(try? PropertyListEncoder().encode(player), forKey:"player")
UserDefaults.standard.synchronize()
}
func getSports() -> [Player]? {
if let data = UserDefaults.standard.value(forKey:"player") as? Data {
let decodedSports = try? PropertyListDecoder().decode([Player].self, from: data)
return decodedSports
}
return nil
}
这是我的对象:
let playerOne = Player(id: 1, url: "https:\\www.google - 1.com", color: "#color 1", image: "imageBase64One", flag: false, position: 1)
let playerTwo = Player(id: 2, url: "https:\\www.google - 2.com", color: "#color 2", image: "imageBase64Two", flag: false, position: 2)
let playerThree = Player(id: 3, url: "https:\\www.google - 3.com", color: "#color 3", image: "imageBase64Three", flag: false, position: 3)
数据模型:
class Player: Codable {
let ID: Int
let URL: String
let Color: String
let Image: String
var Flag: Bool
let Position: Int
init(id: Int, url: String, color: String, image: String, flag: Bool, position: Int) {
self.ID = id
self.URL = url
self.Color = color
self.Image = image
self.Flag = flag
self.Position = position
}
}
我不明白如何更新第二个对象的例如选项“标志”,并且只删除对象两个而不是全部。
解决方案
无需在您的班级中设置每个项目的位置,也无需调用 UserDefaults.standard.synchronize() ,因为它已被弃用。
无论如何,每当您想从数组中编辑对象时:
- 定义你的数组并将你的对象附加到它:
var myArray: [Player] = []!
- 调用要编辑的数组的位置,如果要编辑第二个对象,则:
myArray[2] = Player(id: 15, url: "https:\\www.niceUrl.com", color: .black, image: "niceImage", flag: true, position: 2)
savePlayer(player: myArray[2])
请注意,这里我更改了所有值,如果您只想更改一个,您可以。
推荐阅读
- node.js - 我不知道如何部署这个
- excel - 仅获取特定范围的一个原始结果
- python - 如何导入 Pandas 分析
- php - Woocommerce 免费送货最低金额与货币转换
- android - 重复警报会给出通知不准确的时间
- python - 在 aws lambda 中将 csv 文件写入 pandas 数据框
- python - Django:博客图片未正确上传
- sql - 甲骨文 | 更新长型 | 错误:非法使用 LONG 数据类型
- huawei-mobile-services - 华为快应用获取设备信息时出现问题
- react-native - 如何在 react native 中恢复 IOS 和 Android 文件夹。?