2015-10-23 19 views
-2

我想從我的NSMutableDictionary集所有按鍵爲0,但我發現了以下錯誤:__NSDictionaryM被同時列舉突變

__NSDictionaryM was mutated while being enumerated

有我的代碼:

-(void)marcarTodosRoteiros { 
    _numeroRoteirosSelecionados = (int)[self.roteirosSelecionados count]; 
    for(id key in self.roteirosSelecionados) { 
     [self.roteirosSelecionados setObject:@"1" forKey:key]; 
    } 
    [self.tbFiltros reloadData]; 
} 
+1

這是在哪裏讀的錯誤消息,實際上告訴你,你需要知道的一切情況之一 - 你枚舉它時改變NSDictionary - 解決方案:**不要在枚舉它時改變NSDictionary ** – luk2302

回答

3

這是枚舉:

for(id key in self.roteirosSelecionados) 

,這是穆塔蒂上:

[self.roteirosSelecionados setObject:@"1" forKey:key]; 

你不能這樣做。你應該在這種情況下做的就是讓所有的鑰匙到一個單獨的數組,然後設置@"1"每個鍵:

-(void)marcarTodosRoteiros { 
    NSArray *keys = [self.roteirosSelecionados allKeys]; 
    for (NSString *key in keys) 
     [self.roteirosSelecionados setObject:@"1" forKey:key]; 
    [self.tbFiltros reloadData]; 
}