我有一个包含大量条目的NSArray。但其中一些是两次。 而且我希望每个条目在Array中只有一次。
有人知道我该怎么做吗?
这就是我尝试过的方式:
NSSet *newsSet = [NSSet setWithArray:news];
newsOrte = [newsSet allObject];
答案 0 :(得分:0)
为了有效地使用NSSet
,存储的对象必须符合NSObject
协议并实施hash
(reference)和isEqual:
({ {3}})方法。
请确保您的对象实现这些方法。
答案 1 :(得分: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
)
答案 2 :(得分:-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];
希望它可以帮助你..