【发布时间】:2014-06-10 07:40:19
【问题描述】:
我有对象数组,其中一些对象具有相同的值(例如用户的 guid)。
我想找到所有具有相同指南的对象,然后删除所有对象,而不是先删除。
最好的方法是什么?
【问题讨论】:
-
抱歉,您打开了一个问题并收到了答案。您能给我们反馈吗?
标签: ios arrays xcode nsmutablearray nsarray
我有对象数组,其中一些对象具有相同的值(例如用户的 guid)。
我想找到所有具有相同指南的对象,然后删除所有对象,而不是先删除。
最好的方法是什么?
【问题讨论】:
标签: ios arrays xcode nsmutablearray nsarray
您可以使用 NSMUtableArray 的 removeObject 方法。请注意,您的对象应该适当地实现 isEqual 方法。
根据描述:
这个方法使用 indexOfObject: 来定位匹配然后移除 它们通过使用 removeObjectAtIndex:。因此,匹配是根据 对象对 isEqual: 消息的响应的基础。如果 数组不包含对象,该方法没有效果(虽然它 确实会产生搜索内容的开销)。
【讨论】:
所以,首先你的数组需要是可变的NSMutableArray,那么过程是:
-
NSMutableArray *arr = [NSMutableArray arrayWithArray:@[@1, @2, @3, @2, @5, @3]];
for(int i=0; i<[arr count]; i++) {
id obj = arr[i];
if([arr indexOfObject:obj inRange:NSMakeRange(i+1, [arr count]-i-1)] != NSNotFound) {
[arr removeObject:obj inRange:NSMakeRange(i, [arr count]-i)];
i--;
}
}
【讨论】: