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

时间:2010-11-05 12:32:52

标签: objective-c

NSMutableArray *sectionTitles;
[sectionTitles addObject:due];

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

3 个答案:

答案 0 :(得分:29)

参见Rudolph的答案

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

旧答案

正如理查德所说,NSMutableSet效果很好,但前提是你不需要维护一个有序集合。如果你需要有序的收藏,你可以做的最好的内容检查是:

if (![myMutableArray containsObject:newObject])
    [myMutableArray addObject:newObject];

根据评论进行更新

您可以将此包装在-addUniqueObject:之类的方法中,并将其放在NSMutableArray category中。

答案 1 :(得分:19)

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

使用NSOrderedSetNSMutableOrderedSet

来自NSOrderedSet文档的关于效果的说明:

  

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

答案 2 :(得分:5)

使用NSMutableSet,最适合这些情况

iOS Reference

Mac OSX Reference