var roomsLiveStates = [Firebase?]()
for ref in roomsLiveStates {
if ref != nil {
ref = nil
}
}
}
Это не работает.
var roomsLiveStates = [Firebase?]()
for ref in roomsLiveStates {
if ref != nil {
ref = nil
}
}
}
Это не работает.
Вы можете просто установить для каждого значение nil:
for index in 0 ..< roomsLiveStates.count {
roomsLiveStates[index] = nil
}
Как говорит Swift Язык программирования в Control Flow обсуждение синтаксиса for:
В этом примере печатаются первые несколько записей в таблице из пяти раз:
for index in 1...5 { println("\(index) times 5 is \(index * 5)") }... В приведенном выше примере
indexявляется константой, значение которой автоматически устанавливается в начале каждой итерации цикла. Таким образом, он не должен быть объявлен до его использования. Он неявно объявляется просто его включением в объявление цикла, без необходимости в ключевом словеlet.
Как говорится, index является константой. Таким образом, вы не можете изменить его значение.
Вы также можете использовать map:
roomsLiveStates = roomsLiveStates.map { _ in nil }
Это меньше кода и хорошая привычка заниматься другими случаями, когда вы можете создать обработанную копию массива без изменения оригинала.
Вы также можете просто переназначить весь массив на тот, который содержит только nil:
roomsLiveStates = [Firebase?](count: roomsLiveStates.count, repeatedValue: nil)
Хотя теперь, когда я думаю об этом, это не кажется таким хорошим, потому что (возможно?) выделяется новая память, которая не является быстрой *
EDIT: я только что проверил и обнаружил, что использование .map намного медленнее в сборках Debug. Однако в версиях Release .map на 20% быстрее. Поэтому я предлагаю использовать версию .map (которая также немного более симпатичная;)):
array = array.map { _ in nil }