提问人:Kegham K. 提问时间:10/18/2018 最后编辑:Kegham K. 更新时间:10/18/2018 访问量:319
获取不是循环数组并更改其属性时的可变错误
Getting isn't mutable error while looping through an array and changing its property
问:
我正在循环浏览一组篮球运动员,其中他们的 ID 等于某个球员的 ID。然后我想将 +1 添加到播放器对象的属性中。fouls
self.match.matchState.homePlayers.first{$0.id == toPlayer.id}?.fouls += 1
我有错误
mutating 运算符的左侧不可变:函数调用返回不可变值
该属性是一个可选的整数。 即使我将结构更改为类类型,我也有另一个错误。fouls
var fouls: int?
Player
无法将不可变值作为 inout 参数传递:函数调用返回不可变值
那么我应该如何循环输入对象数组并更改其中的某个属性呢?
答:
0赞
Kegham K.
10/18/2018
#1
我将类型从结构更改为类
然后我找到了一种方法来更新对象属性,它现在工作正常,没有错误Player
Player
fouls
if toPlayer.fouls == nil {
self.match.matchState.homePlayers.first{$0.id == toPlayer.id}?.fouls = toPlayer.fouls! + 1
}
评论
Player
class Player { let id: Int var fouls: Int init(id: Int, fouls: Int) { self.id = id self.fouls = fouls } } let player1 = Player(id: 1, fouls: 2) let player2 = Player(id: 1, fouls: 3) let player3 = Player(id: 1, fouls: 4) let homePlayers = [player1, player2, player3] homePlayers.first{$0.id == 1}?.fouls += 1
Player
fouls
var fouls: Int?