У меня есть изменяемый массив, который содержит изменяемые словари со строками для ключей широты, долготы и id. Некоторые значения широты и долготы одинаковы, и я хочу удалить дубликаты из массива, поэтому у меня есть только один объект для каждого местоположения.Cocoa - Перечислить изменяемый массив, удаляя объекты
Я могу перечислить свой массив и использовать второй перечислительный просмотр каждого объекта для поиска объектов с разными идентификаторами, но с той же широтой и долготой, но если я попытаюсь удалить объект, я буду мутировать массив во время перечисления.
Есть ли способ удалить объекты из массива при перечислении, поэтому я перечисляю только текущий набор объектов по мере обновления массива?
Надеюсь, что этот вопрос имеет смысл.
Спасибо, Howie
Спасибо за совет - я на самом деле пытался что-то вроде этого, но есть проблема. Если я нахожусь в индексе 3, и я нахожу, что он имеет то же место, что и индекс 4, я бы добавил индекс 4 в массив «для удаления». Когда я повторяю цикл для следующей итерации, я хочу, чтобы объект с индексом 4 был пропущен, так как я уже знаю, что это дубликат. Есть ли способ удалить объекты из исходного массива, как я перечисляю или используя какой-либо другой метод петлирования? – Ward
Уорд, ни один из методов, предложенных Петром, не имеет проблемы, которые вы описываете. Тем не менее, есть простой способ избежать этого, если вы хотите делать что-то вручную: перебирать объекты, которые нужно удалить с самого высокого индекса до самого низкого. –
Уорд: Нет, вы не можете мутировать массив, пока вы его перечисляете. Это приведет к исключению какао. Вы должны либо изменить его, либо заменить его * после * цикла или петли на копии. Я рекомендую решение 'removeObjectsAtIndexes:'. –