【问题标题】:get distinct value from NSmutablearray [duplicate]从 NSmutablearray 中获取不同的值 [重复]
【发布时间】:2013-05-18 20:28:08
【问题描述】:

我有一个nsmutablearray,如下所示。我想检索没有冗余的列表值。在这个例子中我应该检索10 20 30

NSMutableArray *array = [[NSMutableArray alloc]initWithObjects:@"10",@"20",@"30",@"30",@"30",@"30",@"20", nil];

【问题讨论】:

    标签: ios nsmutablearray


    【解决方案1】:

    将数组转化为集合,然后再转化为数组。

    NSSet *set = [NSSet setWithArray:array];
    
    NSArray *a = [set allObjects];
    

    您还可以对这个新数组进行排序:

    NSArray *a2 = [a sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        return [obj1 compare:obj2];
    }];
    

    从 iOS 5 开始,您可以使用 -[NSOrderedSet orderedSetWithArray:] 保留顺序:

    NSArray *a2 = [[NSOrderedSet orderedSetWithArray:array] array];
    

    【讨论】:

    • NSOrderedSet 自 iOS 5 起可用
    【解决方案2】:
    NSArray *withRedunecy = [[NSSet setWithArray: array] allObjects];
    

    这将是一种方法,例如您可以创建没有重复对象的新 NSArray,或者您需要创建一个逻辑来获取唯一对象,例如一一插入并检查它是否已经存在。

    【讨论】:

      【解决方案3】:

      只有这行代码可以正常工作。

      NSSet *mySet = [NSSet setWithArray:array];
      

      现在 mySet 将拥有唯一的元素。所以用这个集合创建数组

      NSArray *myarray = [mySet allObjects];
      

      【讨论】:

        【解决方案4】:

        尝试使用这个

        NSArray *array = @[@"10",@"20",@"30",@"30",@"30",@"30",@"20"];
        
        NSArray *newArray =  [[NSSet setWithArray:array] allObjects];
        NSLog(@"%@", newArray);  
        

        输出: ( 30, 20, 10 )

        【讨论】:

        • @HardikThakkar 我的荣幸。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多