更改数组中的属性值

时间:2019-05-28 08:47:44

标签: swift

当我尝试为数组属性分配新值时,出现错误: 无法分配给属性:“ 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"

将所有颜色属性设置为“黑色”的项目替换为“灰色”

2 个答案:

答案 0 :(得分:0)

在您的汽车结构中,您使用let定义了颜色,因此它是一个常量。如果要使其可变,请将其更改为var。

struct car {
    let model: String
    var color: String
}

答案 1 :(得分:0)

由于colorconstant (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
}