Когда я хочу пройти и удалить элемент или элементы из массива (когда выполняются определенные условия), я обычно повторяю назад в C-стиле для цикла и удаляю по индексу, избегая проблемы с изменением индексных номеров следующего обрабатываемого элемента или изменения размера списка, влияющего на то, сколько раз проходит цикл. Но C для цикла была удалена в Swift 3.безопасно удалять элемент, итерации назад в Swift 3
Вот мой Swift 2,3 код для инициализации цикла:
for (var i = allowedItems.count - 1; i > -1; i -= 1)
Вот уродство, созданный преобразователем Swift 3:
for (i in ((-1 + 1)...allowedItems.count - 1).reversed())
Однако эта версия не компилируется. («Ожидаемый», «Разделитель» в операторе «in»).
Я упростить бит «-1 + 1» к нулю:
for (i in (0...allowedItems.count - 1).reversed())
Теперь ошибка «Ожидаемое выражение для последовательности для-каждого цикла».
Что такое безопасный и, мы надеемся, разумно элегантный способ итерации назад в Swift 3, в котором переменная индекса или счетчика доступна для использования при определении того, какой элемент следует удалить? Этот тип логики отображает несколько мест в моем коде, поэтому я хочу убедиться, что вы найдете лучшее решение.
Спасибо.
Вы попробовали 'for (i, item) в allowedItems.enumerated(). Reverseed() {...}'? – dasblinkenlight