我有一個對UserDefaults起作用的對象。 它將數組添加到userdefaults中,然後在發生某些事件時將其刪除。 該對象可以有多個實例。iPhone - 解析NSMutableArray以移除對象
來自不同對象的實例來這些呼籲似乎發生碰撞併產生碰撞:
*** 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。
你確定嗎?我的數組包含NSDictionary對象。鍵碼是鍵值爲「鍵碼」的項目上的值。 – Oliver
@奧利弗我確定。我正在提供關鍵路徑,以便它能夠正常工作。你可以用字典來做到這一點。因此你應該能夠測試它。 –
我會試試。請問如果數組是一個具有.keycode屬性的自定義類insatnces的數組,應該怎麼做? – Oliver