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 }