如何在Objective-C中从NSMutableArray
中删除重复的值(NSString
)?
这是最简单且正确的方式吗?
uniquearray = [[NSSet setWithArray:yourarray] allObjects];
如何在Objective-C中从NSMutableArray
中删除重复的值(NSString
)?
这是最简单且正确的方式吗?
uniquearray = [[NSSet setWithArray:yourarray] allObjects];
有一个KVC对象操作符提供了更优雅的解决方案 uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.self"];
这里是一个NSArray category。
for(int j = 0; j < [myMutableArray count]; j++){
for( k = j+1;k < [myMutableArray count];k++){
NSString *str1 = [myMutableArray objectAtIndex:j];
NSString *str2 = [myMutableArray objectAtIndex:k];
if([str1 isEqualToString:str2])
[myMutableArray removeObjectAtIndex:k];
}
} // Now print your array and will see there is no repeated value
使用Orderedset
就可以解决问题。这将保持数组中的去重并维护顺序,而通常情况下集合不会这样做。
只需使用这个简单的代码:
NSArray *hasDuplicates = /* (...) */;
NSArray *noDuplicates = [[NSSet setWithArray: hasDuplicates] allObjects];
由于NSSet不允许重复值,而所有对象都返回一个数组
NSOrderedSet
代替NSSet
。 - lindinax