我想在核心数据中使用以下示例的模型:
假设有两个托管对象Owner
和Item
,其中Owner
与一组Item
的多对多关系表示Item
它拥有。 Item
具有一对一的反比关系,表明其Owner
。另外,我希望Owner
保存对当前正在选择/使用/等的特定Item
的引用。以下是这种情况的完美解决方案:
Owner
可以快速方便地访问其选定的Item
,理想情况下与访问任何正常的一对一关系的方式相同。Item
只能设置为Owner
的{{1}}列表中的对象。 AKA无法将所选Item
设置为尚未拥有的Item
。Item
拥有自己的BOOL属性,该属性始终是最新的,并指示它们是否由Item
选中。如果选中它并且我想知道Owner
,我将使用其他反向关系属性。Owner
从Item
中设置的Item
中删除了Owner
,然后它也会自动取消选择。我已经尝试过一些有限的解决方案,这些解决方案不能满足我上面所有的理想要求,但确实可以正常工作。例如,现在我有两个关系,一对多关系表示所有拥有的Item
以及一对一关系,将当前选定的Item
链接回其Owner
。这有效,但要求我在代码中的每个地方都要非常小心,以确保事情不会变得不一致。此外,选定的Item
具有两个单独的一对一关系,返回其Owner
。这对我来说似乎是糟糕的设计,因为如果他们在进行更改时不一致地更新所有内容,那么程序员就有很多机会搞砸关系。
所以我的问题是,是否有其他人有更好的解决方案来解决这个问题?我对如何做得更好有更多的想法,但对我来说似乎没有什么方便,我想知道这是否已经解决了这个问题。
答案 0 :(得分:0)
马特,
使用所选项目的自定义访问器可能最容易解决您的问题。你坚持选定的州吗?如果没有,那么与自定义访问者的一对一临时关系来强制执行您的成员资格约束将很好地适应该法案。 BOOL存储为NSNumber,从我所看到的,并没有比具有反向关系的空间效率更高。
安德鲁