1

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

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

4 回答 4

3

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

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:]which 保留顺序:

NSArray *a2 = [[NSOrderedSet orderedSetWithArray:array] array];
于 2013-05-23T13:01:00.697 回答
1

尝试使用这个

NSArray *array = @[@"10",@"20",@"30",@"30",@"30",@"30",@"20"];

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

输出:(30、20、10)

于 2013-05-23T13:03:09.233 回答
1
NSArray *withRedunecy = [[NSSet setWithArray: array] allObjects];

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

于 2013-05-23T13:01:09.597 回答
0

只有这行代码才能正常工作。

NSSet *mySet = [NSSet setWithArray:array];

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

NSArray *myarray = [mySet allObjects];
于 2013-05-23T13:02:09.777 回答