-1

我有一个包含很多条目的 NSArray。但其中一些是两次。而且我希望每个条目在数组中只有一次。

有人知道我该怎么做吗?

这就是我尝试过的方式:

NSSet *newsSet = [NSSet setWithArray:news];
newsOrte = [newsSet allObject];
4

3 回答 3

0

试试这个方法

NSArray *array=[[NSMutableArray alloc]initWithObjects:@"A",@"B",@"A",@"C",@"A", nil];    
NSMutableArray *arr=[NSMutableArray new];
for(id obj in array){
    if (![arr containsObject:obj]) {
        [arr addObject:obj];
    }
}
array=arr;
NSLog(@"==> %@",array);

你也可以这样做:

NSArray *array=[[NSMutableArray alloc]initWithObjects:@"A",@"B",@"A",@"C",@"A", nil];    
NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjects:array forKeys:array];
array=[dict allKeys];

NSLog(@"==> %@",array);

输出 :

==> (
    A,
    B,
    C
)
于 2013-01-10T04:09:08.997 回答
0

为了NSSet有效地使用被存储的对象,必须符合NSObject协议并实现hash( reference ) 和isEqual:( reference ) 方法。

请确保您的对象实现了这些方法。

于 2013-01-09T14:05:31.103 回答
-1

这是代码

NSArray* originalArray = ... // However you fetch it
NSMutableSet* existingNames = [NSMutableSet set];
NSMutableArray* filteredArray = [NSMutableArray array];
for (id object in originalArray) {
   if (![existingNames containsObject:[object name]]) {
      [existingNames addObject:[object name]];
      [filteredArray addObject:object];
   }
}
originalArray = [NSArray arrayWithArray:filteredArray];

希望对你有帮助。。

于 2013-01-09T13:55:34.543 回答