微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过INDEX

如何解决通过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()。

无论如何,只要要编辑数组中的对象,就可以:

  1. 定义数组并将对象附加到数组:
var myArray: [Player] = []!
  1. 调用要编辑的数组的位置,如果要编辑第二个对象,则:
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 举报,一经查实,本站将立刻删除。