【发布时间】: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
我有一个nsmutablearray,如下所示。我想检索没有冗余的列表值。在这个例子中我应该检索10 20 30
NSMutableArray *array = [[NSMutableArray alloc]initWithObjects:@"10",@"20",@"30",@"30",@"30",@"30",@"20", nil];
【问题讨论】:
标签: ios nsmutablearray
将数组转化为集合,然后再转化为数组。
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];
【讨论】:
NSArray *withRedunecy = [[NSSet setWithArray: array] allObjects];
这将是一种方法,例如您可以创建没有重复对象的新 NSArray,或者您需要创建一个逻辑来获取唯一对象,例如一一插入并检查它是否已经存在。
【讨论】:
只有这行代码可以正常工作。
NSSet *mySet = [NSSet setWithArray:array];
现在 mySet 将拥有唯一的元素。所以用这个集合创建数组
NSArray *myarray = [mySet allObjects];
【讨论】:
尝试使用这个
NSArray *array = @[@"10",@"20",@"30",@"30",@"30",@"30",@"20"];
NSArray *newArray = [[NSSet setWithArray:array] allObjects];
NSLog(@"%@", newArray);
输出: ( 30, 20, 10 )
【讨论】: