我尝试开发我的第一个应用程序,这是一个测验应用程序。 这是我为测验玩家准备的课程:
`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)
]
问题是:例如,当我更改视图中一名玩家的点数时,该视图应该预渲染,因为我希望观察所有玩家的所有变量。然而,这没有任何作用,也没有重新渲染。我认为数组有问题,我应该将每个玩家初始化为可观察的对象。然而,在数组中使用它们要容易得多。有人知道如何让每个玩家的所有属性都可以被观察,同时将我的玩家保留在一个数组中吗?
我尝试将它们初始化为可观察对象,但后来无法将它们放入数组中
只需更改:
class QuizPlayer: ObservableObject {
到
struct QuizPlayer {
并删除所有删除所有
@Published
,然后更改:
func addPoints(pointsToAdd: Int) {
到
mutating func addPoints(pointsToAdd: Int) {