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

var roomsLiveStates = [Firebase?]() for ref in roomsLiveStates { if ref != nil { ref = nil } } } 

这似乎并不奏效。

你可以设置每个nil

 for index in 0 ..< roomsLiveStates.count { roomsLiveStates[index] = nil } 

正如Swift编程语言在其控制stream程讨论中所说for语法:

这个例子打印五个表中的前几个条目:

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

…在上面的例子中, index是一个常数,它的值在循环的每次迭代开始时自动设置。 因此,在使用之前不必声明。 它只是通过包含在循环声明中而隐含地声明,而不需要let声明关键字。

正如这样说,这个index是一个常数。 因此,你不能改变它的价值。

你也可以使用map

 roomsLiveStates = roomsLiveStates.map { _ in nil } 

这是较less的代码和一个很好的习惯来进入其他情况下,你可能想创build一个数组的处理副本,而不会改变原来的。

你也可以把整个数组重新分配给一个只包含nil的数组:

 roomsLiveStates = [Firebase?](count: roomsLiveStates.count, repeatedValue: nil) 

虽然现在我想起来了,但这看起来不太好,因为(可能?)新的内存被分配了,这根本就不是很快

编辑:我只是检查,发现在debugging版本中使用.map是慢了很多。 然而,在发布版本上, .map大约快了20%。 所以我build议使用.map版本(这也是安静一点);):

 array = array.map { _ in nil }