【发布时间】:2018-10-17 21:25:46
【问题描述】:
我正在遍历一组篮球运动员,其中他们的 id 等于某个球员的 id。然后我想在播放器对象的fouls 属性中添加 +1。
self.match.matchState.homePlayers.first{$0.id == toPlayer.id}?.fouls += 1
我有错误
变异运算符的左侧不可变:函数调用返回不可变值
fouls 属性是一个可选整数。 var fouls: int?
即使我将 Player 结构更改为类类型,我也遇到了另一个错误。
不能将不可变值作为 inout 参数传递:函数调用返回不可变值
那么我应该如何循环一个对象数组并更改其中的某个属性?
【问题讨论】:
-
@MoAbdul-Hameed 我以前看到过这个问题,但即使我将
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?,但这次等待错误,我认为它有所不同。 “不能将不可变值作为 inout 参数传递:函数调用返回不可变值”存在 inout 问题。
标签: arrays swift mapping mutable