Ios 在Swift中,如何将数组中的每个元素设置为nil?

Ios 在Swift中,如何将数组中的每个元素设置为nil?,ios,swift,Ios,Swift,这似乎不起作用。您可以将每个设置为nil: var roomsLiveStates = [Firebase?]() for ref in roomsLiveStates { if ref != nil { ref = nil } } } 。。。在上面的示例中,index是一个常量,其值在循环的每次迭代开始时自动设置。因此,在使用它之前不必声明它。它仅通过包含在循环声明中而隐式声明,不需要letdeclar

这似乎不起作用。

您可以将每个设置为
nil

var roomsLiveStates = [Firebase?]()

for ref in roomsLiveStates {
        if ref != nil {
                ref = nil
            }
        }
}
。。。在上面的示例中,
index
是一个常量,其值在循环的每次迭代开始时自动设置。因此,在使用它之前不必声明它。它仅通过包含在循环声明中而隐式声明,不需要
let
declaration关键字


如上所述,
索引
是一个常数。因此,您不能更改它的值。

您也可以使用
映射:

for index in 1...5 {
    println("\(index) times 5 is \(index * 5)")
}

在其他情况下,如果您希望创建数组的已处理副本而不改变原始副本,则代码更少,这是一个好习惯。

您也可以将整个数组重新分配给仅包含nil的数组,如:

roomsLiveStates = roomsLiveStates.map { _ in nil }
虽然现在我想起来了,但这似乎不太好,因为(可能?)分配的新内存并不快

编辑:我刚刚检查并发现在调试版本中使用
.map
要慢得多。然而,在发布版本中,
.map
大约快20%。因此,我建议使用
.map
版本(它也有点漂亮;):


如果要将数组中的每个元素设置为数字值(int、float、double…),可以尝试
vDSP
framework

请检查以下内容:

那么为什么不将阵列定义为可选阵列,因为var RoomsInvestates:[Firebase]?然后,如果你想的话,分配nil。,这可能会使所有的项,如niltimex,只是循环通过数组的每个元素,并将值nil设置到元素…不在数组的索引中..这就是问题所在…但是,我应该循环通过数组,将nil分配到所有元素,而不是直接将nil分配到数组?@MartinR你能给我解释一下吗?@anishparajuli-你说得对,TIMEX代码的问题是他们将局部变量
ref
设置为nil,而不是数组中的条目。然而,我不确定你在描述什么样的案例。Rob的代码在数组中循环,并将nil赋值给所有元素。@anishparajuli-I也发现
nil
值数组的这种模式非常可疑。我很难想出一个实际的场景,在这个场景中,用另一种模式解决这个问题不会更好。或者
roomsLiveStates=roomsLiveStates.map{in nil}
更好,对于这种情况。谢谢@Rob!
roomsLiveStates = roomsLiveStates.map { _ in nil }
roomsLiveStates = [Firebase?](count: roomsLiveStates.count, repeatedValue: nil)
array = array.map { _ in nil }