__NSDictionaryM在枚举时发生了变异

时间:2015-10-23 14:05:02

标签: objective-c

我正在尝试将我的NSMutableDictionary中的所有键设置为0,但是我收到以下错误:

__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 个答案:

答案 0 :(得分: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];
}