如何使用Core Data设计对象的“排序”

时间:2014-11-23 16:59:27

标签: ios objective-c oop core-data nsset

我有一个Bullet对象和一个List对象。列表有许多项目符号,子弹可以属于许多列表。

但我需要保证Bullet对象的排序。例如,List对象应始终按顺序排列#1 Bullet A#2 Bullet B和#3 Bullet C.另一个列表(列表B)可能具有相同的子弹,但顺序不同,#1子弹B,#2子弹C和#3子弹A.

NSSet不存储订购,Core Data也不允许存储数组。

我该怎么办?我可以在这里做一些属性吗?

编辑:在听完下面的评论后,我意识到它是“很多人”和“#34;列表和项目符号之间的关系...例如,项目符号(名称:" Egg")可以出现在列表中(名称:" Dairy")和列表(名称:&#) 34;食物&#34)。

3 个答案:

答案 0 :(得分:3)

我会插入第三个实体,比如BulletsInList,带有一个属性,您可以在其中存储您的订购位置(1,2,3等)。

您可以在Bullet和BulletsInList之间建立关系,而不是List和Bullet之间的关系(一个Bullet可以包含在许多BulletsInList中,一个BulletsInList只包含一个Bullet),而另一个则包含在List和BulletsInList之间(一个List可能有许多BulletsInLists,一个BulletsInList只属于一个List。。

简而言之,BullettsInList对象包含:1个List-Object,1个Bullet-Object和1个Number-Attribute for your Position。

答案 1 :(得分:1)

使用ordered relationship。它映射到NSOrderedSet

答案 2 :(得分:1)

使用有序关系它是一个选项,但是iCloud不允许它,所以如果你打算在iCloud上使用核心数据,请不要使用它们,否则它会很痛苦。未来(根据我自己的经验)。

我建议扩展List NSManagedObject的解决方案,让我们称之为List + Additions,在该扩展中,你可以拥有将按需要返回NSSet的方法。