2016-02-03 3 views
2

Итак, у меня есть массив Int, и я пытаюсь создать функцию для удаления определенного значения из массива. Однако функция removeAtIndex() удаляет только первое вхождение, а removeLast() удаляет только последнее. Я попробовал перечислить через массив, но в итоге мне попадает ошибка индекса массива из диапазона, возможная из-за перераспределения, которое возникает при удалении элемента из массива.Удалить все вхождения значения в Swift Array

for (index, value) in connectionTypeIDs.enumerate() { 
      if (value == connectionTypeToDelete){ 
       connectionTypeIDs.removeAtIndex(index) 
      } 
     } 

Любые идеи о том, как это осуществить?

ответ

7

Самый быстрый способ - использовать фильтр. Я не знаю, что ответ на ваш вопрос, но вы можете посмотреть на это:

// remove 1 from array 
arr = arr.filter{$0 != 1} 
+0

В Swift вы можете * мутировать массив во время перечисления. Проблема в том, что индексы больше не соответствуют. –

+0

@MartinR спасибо, я этого не знал. Я обновил свой ответ. – Greg

+0

Это, похоже, сработало! Благодаря! :) – ardevd

Смежные вопросы