如何解决通过INDEX
我创建了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",position: 2)
let playerThree = Player(id: 3,url: "https:\\www.google - 3.com",color: "#color 3",image: "imageBase64Three",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])
请注意,在这里我更改了所有值,如果您只想更改一个,就可以。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。