我有一个核心数据设计问题,我是新手,我还在研究Apple指南。
我有两个实体:“BOX”(属性:name,color,orderingValue)和“CD”(仅属性:name)。 这是一个多对多的关系。
在我的虚拟桌面上,我可以有很多BOX。
BOX可以包含许多CD。同一张CD的副本可以存储在桌面上的不同BOX中。
我使用orderingValue属性对BOX进行排序,以便他们可以在桌面上交换位置。
问题出在CD上。
我希望能够在每个BOX中重新排列CD的顺序。我不能像使用BOX那样对CD实体使用orderingValue属性,因为如果我将它设置为“5”,则该CD将位于每个BOX中的第5位,这不是我想要的。
我认为使用Ordered关系但我放弃了这个选项'因为它还不能与iCloud兼容,我想支持。
使用标准数据库,我将使用BOX.Id,CD.Id和orderingValue创建第三个表,我将使用它与JOIN进行排序。
在不使用有序关系的情况下在CoreData中处理此场景的最佳选择是什么?
由于
尼古拉
更新:我遵循了codeghost的建议,它完美无缺!
答案 0 :(得分:2)
我跟着codeghost'建议:
1)我创建了第三个实体,我称之为“LinkedCD”只有一个属性:orderingValue;
2)我创建了一个从实体“Box”到“LinkedCD”的一对多关系;
3)我创建了一个从实体“Cd”到“LinkedCD”的一对多关系。
我现在可以独立地为每个盒子分类CD。
当我将CD添加到一个BOX时,我在CoreData中插入一个新的LinkedCD实体,并计算每次CD在BOX UITableView内移动时更新的起始orderedValue。当加载UITableView时,我用LinkedCD.orderingValue排序的所有LinkedCD.Cd.name填充它。
一切都完美无瑕。
尼古拉