为数组中所有对象的属性设置相同值的最佳方法

jpu*_*til 1 arrays sequence swift

class Cell {
    var isSelected = true
}
var array: [Cell] = [Cell(), Cell(), Cell()]
Run Code Online (Sandbox Code Playgroud)

现在我想将数组中的所有对象的 isSelected 属性设置为“false”。

我们可以通过 for 循环来实现,也可以使用 map

_ = array.map {$0.isSelected.true}

但我认为会有更好的解决方案。

rma*_*ddy 6

如果您的类是一个结构体,您可以在数组初始化期间执行此操作:

var array = Array(repeating: Cell(isSelected: false), count: 3)
Run Code Online (Sandbox Code Playgroud)

从技术上讲,你可以用一个类来做到这一点,但首先你需要添加一个适当的init(这很容易),第二个(大问题)你最终会得到 3 个对数组中该类的单个实例的引用,这可能不是你想要什么。

如果你真的需要一个类而不是一个结构,那么 usingforEach是访问数组每个元素的正确方法。map不是正确的解决方案。

array.forEach { $0.isSelected = false }
Run Code Online (Sandbox Code Playgroud)