ios - 根据其值删除NSArray元素

标签 ios objective-c nsarray nsdictionary

我有一个NSDictionary值的NSArray他们的NSDictionay结构看起来像这样

ID = 22;
SERIESID = 33;
YEAREND = 2002;
YEARSTART = 1996;

我的数组中有十几个这样的元素,我想知道如何从NSArray中删除具有相同 SERIESID 的元素,或者即使在完成NSArray之后也可以删除。

任何帮助,将不胜感激。

最佳答案

基本上,遍历数组,跟踪看到的SERIESID,如果当前元素的SERIESID是重复的,则将其标记为要删除。

像这样:

NSMutableSet *seen = [NSMutableSet set];
NSMutableIndexSet *toDelete = [NSMutableIndexSet indexSet];
[yourArray enumerateObjectsUsingBlock:^(id dict, NSUInteger i, BOOL *stop) {
    if ([seen containsObject:dict[@"SERIESID"]]) {
        [toDelete addIndex:i];
    } else {
        [seen addObject:dict[@"SERIESID"]];
    }
}];
[yourArray removeObjectsAtIndexes:toDelete];

(作为一个补充说明,即使这不是最直观的方法,也必须以这种方式进行删除。NSMutableArray并非旨在在循环浏览过程中进行更改,因此,如果您仅尝试在循环中使用removeObjectAtIndex:,将会得到错误。这就是为什么我们建立一个要删除的对象列表,然后将其移交给数组的原因。)

关于ios - 根据其值删除NSArray元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16158279/

相关文章:

ios - 将设备方向设置为仅适用于 iPad 的横向

html - 如何在页脚中正确定位 iOS 音频播放器?

ios - 优化 int 递增

iphone - 防止重复的 NSArray(一个已排序,一个未排序)

swift 2 集合用于按值对键值对进行排序

ios - 跨多个 ios 设备的持久访问 token ?

objective-c - 在 Cocos2d 中没有调用单例方法

ios - 适用于企业内部APP的iOS推送通知

ios - ZBar SDK扫描二维码时如何去除绿色矩形?

ios - 在数组中查找重复的数字,然后计算重复的数量