Коллекция <__ NSArrayM: 0x7fa1f2711910> была видоизменена при перечислении
Есть ряд вопросов с похожим названием, но ни один из них не помог мне.
но я могу связать решение этого«NSGenericException», причина: коллекция <__ NSArrayM: 0x7fabb400> была видоизменена при перечислении вопрос с моим вопросом.Потому что это завершение происходит, когда я добавляю, удаляя строковый объект с массивом.
Ошибка :
Завершение работы приложения из-за необработанного исключения «NSGenericException», причина: «*** Коллекция <__ NSArrayM: 0x7fa1f2711910> была мутирована при перечислении».
Первый вызов стека вызовов:
(
0 CoreFoundation 0x00000001087b8c65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000108422bb7 objc_exception_throw + 45
2 CoreFoundation 0x00000001087b85c4 __NSFastEnumerationMutationHandler + 132
3 0x0000000107e24cf5 -[ProfessionalRegSecond tableView:didDeselectRowAtIndexPath:] + 773
4 UIKit 0x0000000109759d71 -[UITableView _deselectRowAtIndexPath:animated:notifyDelegate:] + 347
5 UIKit 0x000000010974deea -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 187
6 UIKit 0x000000010968062c _applyBlockToCFArrayCopiedToStack + 314
7 UIKit 0x00000001096804a6 _afterCACommitHandler + 533
8 CoreFoundation 0x00000001086ebca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
9 CoreFoundation 0x00000001086ebc00 __CFRunLoopDoObservers + 368
10 CoreFoundation 0x00000001086e1a33 __CFRunLoopRun + 1123
11 CoreFoundation 0x00000001086e1366 CFRunLoopRunSpecific + 470
12 GraphicsServices 0x000000010d6c8a3e GSEventRunModal + 161
13 UIKit 0x000000010965c900 UIApplicationMain + 1282
14 0x0000000107de14cf main + 111
15 libdyld.dylib 0x000000010b585145 start + 1
)
libc ++ abi.dylib: завершается с необработанным исключением типа NSException
Что я пытаюсь сделать:
Мне нужен массив таким образом, чтобы при выборе ячейки я хотел добавить этот объект в массив, а когда я отменяю выбор строки, я хочу удалить эту строку из массива, чтобы в результате в массиве были только выбранные записи. Как это сделать?
Вот мой код
@implementation Professional
{
NSMutableArray *updatedLocalityArray; // alloc,init did in viewDidLoad
NSString *toCheck;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",tableViewCell.textLabel.text);
toCheck = tableViewCell.textLabel.text;
[updatedLocalityArray addObject:toCheck];
NSLog(@"%@ *****", updatedLocalityArray);
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *tableViewCell = [tableView cellForRowAtIndexPath:indexPath];
NSLog(@"%@",tableViewCell.textLabel.text);
for (NSString *test in updatedLocalityArray)
{
if ([test isEqualToString:tableViewCell.textLabel.text])
{
[updatedLocalityArray removeObject:test];
NSLog(@"%@ *****", updatedLocalityArray);
}
}
}