У меня есть объект, который действует на UserDefaults.
Он добавляет вещи в массив в userdefaults, а затем удаляет его при возникновении некоторых событий.
Этот объект может иметь более одного экземпляра.
Эти вызовы, поступающие от экземпляра различных объектов, похоже, сталкиваются и вызывают сбой:
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFArray: 0x66061e0> was mutated while being enumerated.<CFArray 0x66061e0 [0xe38400]>{type = mutable-small, count = 3, values = (
Я удаляю свои вещи так:
// ==========================================================================================================
- (void) deleteSavedItem:(NSString*)keycodeToDelete
// ==========================================================================================================
{
NSMutableArray* savedItems = [[self loadAllSavedItems] mutableCopy];
for (NSDictionary* dict in savedItems) {
NSString* keycode = [dict objectForKey:@"keycode"];
if ([keycode isEqualToString:keycodeToDelete])
[savedItems removeObject:dict];
}
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:savedItems forKey:@"savedItems"];
[defaults synchronize];
[savedItems release];
}
// ==========================================================================================================
- (NSArray*) loadAllSavedItems
// ==========================================================================================================
{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSArray* savedItems = [defaults arrayForKey:@"savedItems"];
if (savedItems == nil) savedItems = [NSArray array];
return savedItems;
}
Как я могу добавлять / удалять вещи из этого массива без коллизий?
Я не уверен, что причина в том, что многие объекты, которые используют значения по умолчанию, вызывают этот сбой. Я тоже подозреваю, что именно так я разбираю массив.
Мне нужно сохранять экземпляры своих объектов и поддерживать их выполнение процесса parralel.