我有一个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)。
答案 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的方法。