CoreData在多对多关系中排序

时间:2013-01-23 12:34:56

标签: ios core-data

我有一个核心数据设计问题,我是新手,我还在研究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的建议,它完美无缺!

1 个答案:

答案 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填充它。

一切都完美无瑕。

尼古拉