【问题标题】:Enumerating array of objects枚举对象数组
【发布时间】:2014-06-10 07:40:19
【问题描述】:

我有对象数组,其中一些对象具有相同的值(例如用户的 guid)。

我想找到所有具有相同指南的对象,然后删除所有对象,而不是先删除。

最好的方法是什么?

【问题讨论】:

  • 抱歉,您打开了一个问题并收到了答案。您能给我们反馈吗?

标签: ios arrays xcode nsmutablearray nsarray


【解决方案1】:

您可以使用 NSMUtableArray 的 removeObject 方法。请注意,您的对象应该适当地实现 isEqual 方法。

[NSMutableArray removeObject]

根据描述:

这个方法使用 indexOfObject: 来定位匹配然后移除 它们通过使用 removeObjectAtIndex:。因此,匹配是根据 对象对 isEqual: 消息的响应的基础。如果 数组不包含对象,该方法没有效果(虽然它 确实会产生搜索内容的开销)。

【讨论】:

    【解决方案2】:

    所以,首先你的数组需要是可变的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--;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多