удалить объект из NSMutableArray

У меня есть два элемента:

NSMutableArray* mruItems; NSArray* mruSearchItems; 

У меня есть UITableView который содержит mruSearchItems принципе, и как только пользователь выполняет mruSearchItems и удаляет определенную строку, мне нужно найти ВСЕ совпадения этой строки внутри mruItems и удалить их оттуда.

Я не использовал NSMutableArray, и по какой-то причине мой код дает мне ошибки:

 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { //add code here for when you hit delete NSInteger i; i=0; for (id element in self.mruItems) { if ([(NSString *)element isEqualToString:[self.mruSearchItems objectAtIndex:indexPath.row]]) { [self.mruItems removeObjectAtIndex:i]; } else { i++; } } [self.searchTableView reloadData]; } 

}

Ошибка: теперь я вижу, что некоторые строки не заключены между кавычками (тем не менее, в UTF8)

 Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x1a10e0> was mutated while being enumerated.( "\U05de\U05e7\U05dc\U05d3\U05ea", "\U05de\U05d7\U05e9\U05d1\U05d5\U05df", "\U05db\U05d5\U05e0\U05df", "\U05d1 ", "\U05d1 ", "\U05d1 ", "\U05d1 ", Jack, Beans, Cigarettes )' 

Вы получаете исключение, потому что вы мутируете контейнер, итерации по его элементам.

removeObject: делает именно то, что вы ищете: удаление всех объектов, равных аргументу.

 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle != UITableViewCellEditingStyleDelete) return; NSString *searchString = [self.mruSearchItems objectAtIndex:indexPath.row]; [self.mruItems removeObject:searchString]; [self.searchTableView reloadData]; } 

Вы не можете редактировать коллекцию, перебирая ее, вместо этого сохраняя указатели, а затем удаляете их, перебирая через свой массив индексов.

  • iOS Поиск массива для строки и добавление ее, если отсутствует
  • удаление одного объекта из nsarray удаляет все
  • : непризнанный селектор, отправленный экземпляру SIGABRT
  • Хорошая практика управления памятью при ARC
  • Есть ли версия NSMutableArray NSMapTable?
  • iOS, как NSMutableArray проверяет, содержит ли он объекты NSNumber?
  • Как addObject как NSMutableArray в NSMutableArray в swift
  • Проверьте, нет ли NSDictionary
  • NSXMLParser, как передать NSMutableDictionary в NSMutableArray
  • writeToFile не работает с NSDictionary
  • Добавление нового объекта для получения NSMutableArray - возвращает исключение NSInternalInconsistencyException
  • Давайте будем гением компьютера.