首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Objective-C中从NSMutableArray中删除重复值的最好方法是什么?

在Objective-C中从NSMutableArray中删除重复值的最好方法是什么?
EN

Stack Overflow用户
提问于 2009-06-22 06:11:04
回答 9查看 104.9K关注 0票数 150

在Objective-C中从NSMutableArray中删除重复值(NSString)的最佳方法是什么?

这是最简单、最正确的方法吗?

代码语言:javascript
复制
uniquearray = [[NSSet setWithArray:yourarray] allObjects];
EN

回答 9

Stack Overflow用户

发布于 2013-06-19 17:24:38

如果您的目标是iOS 5+ (涵盖整个iOS世界),最好使用NSOrderedSet。它删除了重复项并保留了NSArray的顺序。

只管去做

代码语言:javascript
复制
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:yourArray];

现在可以将其转换回唯一的NSArray

代码语言:javascript
复制
NSArray *uniqueArray = orderedSet.array;

或者直接使用orderedSet,因为它有和NSArray一样的方法,比如objectAtIndex:firstObject等等。

NSOrderedSet上使用contains进行成员资格检查比在NSArray上更快

有关更多信息,请查看NSOrderedSet Reference

票数 21
EN

Stack Overflow用户

发布于 2013-05-14 16:35:42

在OS X v10.7及更高版本中可用。

如果你担心订单,正确的方法是

代码语言:javascript
复制
NSArray *no = [[NSOrderedSet orderedSetWithArray:originalArray]allObjects];

下面是按顺序从NSArray中删除重复值的代码。

票数 19
EN

Stack Overflow用户

发布于 2015-06-02 17:30:18

需要订单

代码语言:javascript
复制
NSArray *yourarray = @[@"a",@"b",@"c"];
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:yourarray];
NSArray *arrayWithoutDuplicates = [orderedSet array];
NSLog(@"%@",arrayWithoutDuplicates);

或者不需要命令

代码语言:javascript
复制
NSSet *set = [NSSet setWithArray:yourarray];
NSArray *arrayWithoutOrder = [set allObjects];
NSLog(@"%@",arrayWithoutOrder);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1025674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档