【问题标题】:Remove Duplicate Objects From NSMutableArray object property? [duplicate]从 NSMutableArray 对象属性中删除重复对象? [复制]
【发布时间】:2013-11-17 17:31:34
【问题描述】:

我有一个 NSObject,其属性如下

@property (nonatomic, retain) NSString * destinationid;
@property (nonatomic, retain) NSString * destinationname;
@property (nonatomic, retain) NSString * assetid;
@property (nonatomic, retain) NSString * assetname;
@property (nonatomic, retain) NSString * assetdescription;

在这里,我将它保存在 NSMutableArray 中。

我从服务器获取的数据包含相同的 DestinationName,但其他属性不同。

我想检查一下,如果NSMutableArray中已经添加了同名的Object,就不要再添加了。

我尝试使用 innner loops 但没有用 :(

谢谢

【问题讨论】:

  • 你能说一下内循环发生了什么吗?请显示你的代码
  • 我无法为其创建逻辑

标签: ios objective-c nsstring nsmutablearray


【解决方案1】:

这里有一个解决方案:

NSArray *originalArray = ... // original array of objects with duplicates
NSMutableArray *uniqueArray = [NSMutableArray array];
NSMutableSet *names = [NSMutableSet set];
for (id obj in originalArray) {
    NSString *destinationName = [obj destinationname];
    if (![names containsObject:destinationName]) {
        [uniqueArray addObject:obj];
        [names addObject:destinationName];
    }
}

【讨论】:

    【解决方案2】:

    一种方法是创建一个新数组,其中仅包含来自其他数组的目标名称,并检查来自服务器的名称是否包含在其中:

    NSArray *names = [self.mut valueForKey:@"destinationname"];
        if (![names containsObject:destName]) {
            [self.mut addObject:newObjectFromServer];
        }
    

    mut 是我的可变数组的名称,destName 是您从服务器获取的对象中的目标名称。

    【讨论】:

      【解决方案3】:

      这个函数应该可以完成这项工作:

      BOOL contains(id object, NSMutableArray *array)
      {
          for (id array in yourArray)
              if ([object.destinationname isEqualToString:yourObject.destinationname])
                  return YES;
          return NO;
      }
      

      使用示例:

      if (!contains(object, array))
          [array addObject:object];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        • 2011-12-28
        • 1970-01-01
        相关资源
        最近更新 更多