我想从数组中删除对象但是我收到此错误。我发现了相关的问题但却无法得到。 请帮我。 我的代码是
NSArray *tripsArray= [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSMutableArray *myTripsArray = [tripsArray mutableCopy];
for (NSDictionary *dict in myTripsArray){
if ([[dict valueForKey:@"state"] isEqualToString:@"undeployed"]){
int index = [myTripsArray indexOfObject:dict];
[myTripsArray removeObjectAtIndex:index];
}
}
答案 0 :(得分:2)
这是由于您正在迭代的数组,您要从同一个数组中删除一个对象。
更改此行:
for (NSDictionary *dict in myTripsArray)
对此:
for (NSDictionary *dict in [myTripsArray copy])
在这里,我使用数组的副本进行迭代,并使用原始数据进行变异。
答案 1 :(得分:1)
尝试这样做:
NSArray *tripsArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSMutableArray *myTripsArray = [tripsArray mutableCopy];
for (NSDictionary *dict in [myTripsArray copy]){
if ([[dict valueForKey:@"state"] isEqualToString:@"undeployed"]){
int index = [myTripsArray indexOfObject:dict];
[myTripsArray removeObjectAtIndex:index];
}
}
// And now myTripsArray will be changed
答案 2 :(得分:1)
您收到错误是因为您尝试在枚举时更改数组。您应该复制此数组并使用一个数组进行枚举,然后使用第二个数组进行删除。或者您可以在第二个数组中添加要删除的所有项目(您将在cicle中找到),然后通过调用removeObject:
删除它们。
第一次删除第二个索引后,不存储索引的原因可能是错误的(如果第二个对象的索引比第一个更高)。