Cocoa - 枚举可变数组,删除对象

时间:2010-03-27 17:42:49

标签: cocoa nsmutablearray duplicates enumerate

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

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

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

希望这个问题有道理。

谢谢, 豪伊

2 个答案:

答案 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];
    }
}