0

我有一个可变数组,其中包含可变字典,其中包含键纬度、经度和 ID 的字符串。一些纬度和经度值是相同的,我想从数组中删除重复项,因此每个位置只有一个对象。

我可以枚举我的数组并使用第二个枚举检查每个对象以查找具有不同 id 但纬度和经度相同的对象,但是如果我尝试删除该对象,我会在枚举期间使数组静音。

有没有办法在枚举时从数组中删除对象,所以我只在数组更新时枚举当前的对象集?

希望这个问题有意义。

谢谢,豪伊

4

2 回答 2

5

枚举时计算一个索引变量。当您遇到有兴趣删除的字典时,请将其索引添加到可变索引集。然后,当您完成枚举时,向数组发送一条removeObjectsAtIndexes:消息,传递索引集。

另一种方法是建立第二个数组,然后向第一个数组发送setArray:消息,传递第二个数组——或者释放第一个,保留第二个,并将第二个设置为新的第一个。

在不相关的注释中,您可能会考虑将字典替换为模型对象。它倾向于使代码更清晰。

于 2010-03-27T18:18:43.977 回答
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];
    }
}
于 2013-12-04T12:06:40.757 回答