我怎样才能使NSMutableArray只接受唯一值?

Jul*_*les 15 objective-c

NSMutableArray *sectionTitles;
[sectionTitles addObject:due];
Run Code Online (Sandbox Code Playgroud)

如何只为数组添加唯一值?

Jos*_*zzi 30

见鲁道夫的答案

我下面的旧答案现在已经过时了,已经有一段时间了.Rudoph对NSOrderedSet/ 的引用NSMutableOrderedSet是正确的,因为在这个Q和我的A.之后添加了这些类.

老答案

正如理查德所说,NSMutableSet只有你不需要维护一个有序的收藏品,它才能运作良好.如果您确实需要有序的集合,那么您可以做的最好的内容检查是:

if (![myMutableArray containsObject:newObject])
    [myMutableArray addObject:newObject];
Run Code Online (Sandbox Code Playgroud)

根据评论更新

您可以将其包装在类似的方法中-addUniqueObject:,并将其放在NSMutableArray 类别中.


Rud*_*vič 19

更多2012-ish答案(如果有人在将来偶然发现):

使用NSOrderedSetNSMutableOrderedSet.

关于NSOrderedSet文档性能的说明:

当元素的顺序很重要时,可以使用有序集作为数组的替代,并且在测试集合中是否包含对象时的性能是一个考虑因素 - 测试数组的成员资格要比测试集合的成员资格要慢.


Ric*_*III 5

使用NSMutableSet,最好是这些情况

iOS参考

Mac OSX参考