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

Ano*_*ite 22 xcode core-data objective-c

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

它们几乎相同,只是在NSOrderedSet中检查所有权略快.

苹果公司没有使用更为熟悉和着名的NSArray的任何理由?

Mar*_*n R 61

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

随着NSArray你可以创建这是关系到另一个物体的物体不止一次.

  • @PostCodeism - 因为你可能存储了一系列非独特元素,它们相对于彼此的位置很重要.IE,也许你有一个字母数组代表一个单词或一组代表一首歌的音符.字母可以在一个单词中重复,而音符可以在一首歌中重复,因此它不应该忽略重复的元素,而重新排列它们不会给你相同的单词或歌曲,所以它也需要跟踪顺序.如果您需要可能重复的订单元素,则需要NSArray. (10认同)

Rob*_*ier 14

来自文档:

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