当我尝试为数组属性分配新值时,出现错误: 无法分配给属性:“ color”是一个“ let”常量
struct car {
let model: String
let color: String
}
var myCars :[car] = [
car(name:"model X", color: "black"),
car(name:"model Y", color: "blue"),
car(name:"roadster", color: "red"),
car(name:"model S", color: "black"),
car(name:"model 3", color: "black")
]
let colorFilter = dataSource.items.index(where: {$0.color == "black"})
myCars[colorFilter].color = "grey"
将所有颜色属性设置为“黑色”的项目替换为“灰色”
答案 0 :(得分:0)
在您的汽车结构中,您使用let定义了颜色,因此它是一个常量。如果要使其可变,请将其更改为var。
struct car {
let model: String
var color: String
}
答案 1 :(得分:0)
由于color
是constant (let) property
,也就是说,一旦initialised
,您就无法更改其值。如果您想修改color
的值,请设为var
而不是let
struct car {
let model: String
var color: String
}
要从color
更新所有cars
的{{1}},请在black to grey
数组上使用 map(_:)
。
myCars
输出:
myCars = myCars.map {
var newCar = $0
if newCar.color == "black" {
newCar.color = "grey"
}
return newCar
}