0

我有一个核心数据设计问题,我是新手,我仍在研究 Apple 指南。

我有两个实体:“BOX”(属性:名称、颜色、orderingValue)和“CD”(唯一属性:名称)。这是一个多对多的关系。

在我的虚拟办公桌上,我可以有很多盒子。

一个盒子可以包含许多 CD。同一张 CD 的副本可以存储在桌子上的不同 BOX 中。

我使用 orderingValue 属性对 BOX 进行排序,以便它们可以在桌子上交换位置。

问题出在 CD 上。

我希望能够重新排列每个 BOX 中 CD 的顺序。我不能像对 BOX 那样对 CD 实体使用 orderingValue 属性,因为如果我将其设置为“5”,那么该 CD 将位于每个 BOX 中的第 5 位,这不是我想要的。

我想使用有序关系,但我放弃了这个选项,因为它还不兼容我想要支持的 iCloud。

使用标准数据库,我将使用 BOX.Id、CD.Id 和 orderingValue 创建第三个表,并将其与 JOIN 一起用于排序。

在不使用有序关系的情况下,在 CoreData 中处理这种情况的最佳选择是什么?

谢谢

尼古拉

更新:我听从了 codeghost 的建议,它完美无缺!

4

1 回答 1

2

我遵循了 codeghost 的建议:

1)我创建了第三个实体,我称之为“LinkedCD”,只有一个属性:orderingValue;

2)我创建了从实体“Box”到“LinkedCD”的一对多关系;

3) 我创建了从实体“Cd”到“LinkedCD”的一对多关系。

我现在可以对每个盒子的 CD 进行独立排序。

当我将 CD 添加到一个 BOX 时,我在 CoreData 中插入了一个新的 LinkedCD 实体,并计算了每次将 CD 移动到 BOX UITableView 内时我都会更新的起始 orderingValue。加载 UITableView 时,我用所有按 LinkedCD.orderingValue 排序的 LinkedCD.Cd.name 填充它。

一切都完美无缺。

尼古拉

于 2013-01-24T20:46:39.940 回答