【问题标题】:NSMutableArray - Remove duplicatesNSMutableArray - 删除重复项
【发布时间】:2010-10-07 14:14:28
【问题描述】:

我试过这样做:Values = [[NSSet setWithArray:Values] allObjects]; 没有成功,

谢谢

【问题讨论】:

    标签: iphone objective-c nsmutablearray


    【解决方案1】:

    您的方法应该可以工作,只是它返回一个NSArray 而不是NSMutableArray。你可以使用

    [values setArray:[[NSSet setWithArray:values] allObjects]];
    

    values 设置为新数组的内容。

    【讨论】:

      【解决方案2】:

      请注意,NSSet 方法可能会删除您在NSArray 中的任何订单。您可能希望循环遍历您的数组以保持顺序。像这样:

      NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
      for(id e in Values)
      {
          if(![uniqueValues containsObject:e])
          {
              [uniqueValues addObject:e];
          }
      }
      

      【讨论】:

        【解决方案3】:
        NSMutableArray* myArray =
        [[NSMutableArray alloc]initWithObjects:
        @"red",@"blue",@"red",@"green",@"yellow", @"33", @"33",@"red", @"123", @"123",nil];
        
        NSOrderedSet *mySet = [[NSOrderedSet alloc] initWithArray:myArray];
        myArray = [[NSMutableArray alloc] initWithArray:[mySet array]];
        
        NSLog(@"%@",myArray);
        

        【讨论】:

          【解决方案4】:

          我们可以使用键值编码:

          uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.fieldNameTobeFiltered"];
          

          完整理解请参考以下文章

          KVC Collection Parameters

          【讨论】:

            猜你喜欢
            • 2011-08-24
            • 1970-01-01
            • 2013-04-17
            • 2013-04-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-12
            • 2014-01-20
            相关资源
            最近更新 更多