为什么Apple在CoreData中使用NSOrderedSet而不是NSArray来实现有序的多值关系?

时间:2012-10-23 13:36:42

标签: objective-c xcode core-data

在核心数据中,如果我们有多值关系,例如当一个企业可以拥有多个关键字时,在子类NSManagedObject生成器中,Apple将使用NSOrderedSet而不是NSArray。

它们几乎相同,只是在NSOrderedSet中检查所有权稍快一些。

为什么Apple没有使用更为熟悉和着名的NSArray?

2 个答案:

答案 0 :(得分:61)

我的猜测是:因为NSOrderedSet管理不同元素的集合,类似于无序关系的NSSet

使用NSArray,您可以创建一个与另一个对象多次相关的对象。

答案 1 :(得分:14)

来自docs

  

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