Я заметил, что при попытке удалить или изменить элементы массива в цикле произошли странные вещи. Однако, когда вы делаете это при вызове enumerate()
в массиве, он работает так, как ожидалось. Какова его концепция и когда мы должны использовать enumerate()
?Когда использовать перечисление для массивов в Swift?
ответ
Чтобы ответить на вопрос из заголовка, вы используете enumerate()
, когда вам нужно значение индекса в дополнение к самой стоимости:
Если вам нужно целочисленное значение индекса каждого элемента, а также его значение, используйте
enumerate()
метод для итерации по массиву.for (index, value) in shoppingList.enumerate() { print("Item \(index + 1): \(value)") }
enumerate()
обеспечивает безопасный шаблон для изменения элементов массива в то время как итерация над ними:
for (index, (var value)) in shoppingList.enumerate() {
if value == "something" {
shoppingList[index] = "something-else"
}
}
Что вы подразумеваете под * "while generate(), метод, используемый в регулярном цикле, не является." *? - «Обычный» цикл также безопасен: 'для элемента в массиве {array.removeAll()}' работает без проблем. –
@MartinR Это приятно знать. Я предполагаю, что в любом случае я не должен комментировать причину, потому что слишком много частей могут быть в игре (это элемент класса или структуры, переменная цикла «var», сам массив изменен или только его элементы, и скоро). Идея была, конечно, продемонстрировать симпатичный трюк, который мой комментарий в середине нисколько не помог. Благодаря! – dasblinkenlight
- 1. Перечисление NSCountedSet в Swift
- 2. Перечисление кортежей в Swift
- 3. Hashable перечисление в Swift
- 4. Перечисление списка массивов для повторяющегося значения
- 5. Можно ли неявно использовать перечисление для строки? (Swift)
- 6. перечисление нелитеральных значений в Swift
- 7. removeObjectsAtIndexes для массивов Swift
- 8. Swift расширение и перечисление для цветовых схем
- 9. Как узнать, когда использовать перечисление или подкласс?
- 10. Когда использовать OOP вместо массивов
- 11. Как работает перечисление в Swift?
- 12. Twitter Typehead, перечисление объектов массивов
- 13. Использование массивов в Swift
- 14. условного «в» для массивов в Swift
- 15. Как передать пустое значение, когда ожидается перечисление в swift
- 16. Как использовать перечисление в прошивке 8 Swift рамки общественного API
- 17. Сравнение массивов в swift
- 18. Encode/Decode перечисление для Swift (Xcode 6.1)
- 19. Массивов в Swift 3
- 20. Сохранение массивов в Swift
- 21. Определение массивов в Swift
- 22. Передача массивов в Swift
- 23. Swift, как использовать перечисление, чтобы получить строковое значение
- 24. Использовать перечисление как параметр функции
- 25. Добавление массивов в Swift
- 26. Массив массивов в Swift
- 27. используя 720p, 1080p как перечисление в swift
- 28. Кодировать и декодировать перечисление в Swift 1.2
- 29. Как вернуть и использовать перечисление типов или методов класса Swift
- 30. Установить перечисление из NSDictionary Swift
Это не ясно, что вы просите. Можете ли вы предоставить образец вашей проблемы с циклом vs перечислением и ожидаемым и фактическим поведением? – JAL
Посмотрите http://stackoverflow.com/a/32425212/1187415. –