我有一个可变数组,其中包含可变字典,其中包含键的纬度,经度和id的字符串。一些纬度和经度值是相同的,我想从数组中删除重复项,因此每个位置只有一个对象。
我可以枚举我的数组,并使用第二个枚举查看每个对象来查找具有不同ID但具有相同纬度和经度的对象,但是如果我尝试删除该对象,我会在枚举期间将数组静音。 / p>
有什么方法可以在枚举时从数组中删除对象,所以我只在数组更新时枚举当前的对象集?
希望这个问题有道理。
谢谢, 豪伊
答案 0 :(得分:5)
在枚举时计算索引变量。当您遇到要删除的词典时,请将其索引添加到mutable index set。然后,当您完成枚举时,发送数组a removeObjectsAtIndexes:
message,传递索引集。
另一种方法是建立第二个数组,然后发送第一个数组setArray:
消息,传递第二个数组 - 或释放第一个数组,保留第二个数组,并将第二个数组设置为新的第一个数组
在不相关的说明中,您可以考虑用model objects替换字典。它倾向于使代码更清晰。
答案 1 :(得分:2)
其实你可以。你需要从顶部索引到0。 试试这个:
for (int i = [mutableArray count] -1; i >=0; i--) {
id yourObject = [mutableArray objectAtIndex: i];
BOOL needToDelete;
// place you conditions here...
if (needToDelete) {
[mutableArray removeObject: yourObject];
}
}