如何跟踪数组中对象的变化

问题描述 投票:0回答:1

我尝试开发我的第一个应用程序,这是一个测验应用程序。 这是我为测验玩家准备的课程:

`class QuizPlayer: ObservableObject {
    @Published var name: String
    @Published var points: Int
    @Published var isActive: Bool
    @Published var isPartOfTheCurrentRound: Bool
    @Published var pointsThisRound: Int
    @Published var playerColor: Color

    init(name: String, playerColor: Color) {
        self.name = name
        self.points = 0
        self.isActive = false
        self.isPartOfTheCurrentRound = true
        self.pointsThisRound = 0
        self.playerColor = playerColor
    }

    func addPoints(pointsToAdd: Int) {
        self.points += pointsToAdd
    }
}`

`类 QuizPlayer: ObservableObject { @Published 变量名称:字符串 @Published var 点:Int @Published var isActive: Bool @Published var isPartOfTheCurrentRound: Bool @Published var 点ThisRound: Int @Published var playerColor:颜色

init(name: String, playerColor: Color) {
    self.name = name
    self.points = 0
    self.isActive = false
    self.isPartOfTheCurrentRound = true
    self.pointsThisRound = 0
    self.playerColor = playerColor
}

func addPoints(pointsToAdd: Int) {
    self.points += pointsToAdd
}

}`

所以在我的比赛中我初始化了 5 名球员作为休耕者

`@State var quizPlayers: [QuizPlayer] = [
        QuizPlayer(name: "", playerColor: Color.blue),
        QuizPlayer(name: "", playerColor: Color.orange),
        QuizPlayer(name: "", playerColor: Color.yellow),
        QuizPlayer(name: "", playerColor: Color.pink),
        QuizPlayer(name: "", playerColor: Color.brown)
]

问题是:例如,当我更改视图中一名玩家的点数时,该视图应该预渲染,因为我希望观察所有玩家的所有变量。然而,这没有任何作用,也没有重新渲染。我认为数组有问题,我应该将每个玩家初始化为可观察的对象。然而,在数组中使用它们要容易得多。有人知道如何让每个玩家的所有属性都可以被观察,同时将我的玩家保留在一个数组中吗?

我尝试将它们初始化为可观察对象,但后来无法将它们放入数组中

arrays swiftui observable state
1个回答
0
投票

只需更改:

class QuizPlayer: ObservableObject {

struct QuizPlayer {

并删除所有删除所有

@Published
,然后更改:

func addPoints(pointsToAdd: Int) {

mutating func addPoints(pointsToAdd: Int) {
© www.soinside.com 2019 - 2024. All rights reserved.