【发布时间】:2015-05-25 00:19:16
【问题描述】:
我正在努力思考如何拥有同一个 Core Data 实体的多个实例。这似乎不可能,所以我一定是在接近这个错误。
基本上,假设我有一个可以装满多个气球的购物车。但是每个气球可以有不同的颜色。如果我编辑气球的模板,所有气球都会更新以反映更改。所以假设我将模板的名称更改为“培根”,所有气球的名称也会更改为“培根”。
我将如何使用 Core Data 实现这一目标?
编辑
根据要求,我将尝试澄清我正在尝试做的事情。
也许这个例子会更清楚。
假设您正在创建一个练习模型。所以你有Ab Roller、Shoulder Press等。
在workout 中,您可能有多个实例。因此,在一个 workout 中,您将拥有,说
Ab RollerShoulder PressAb Roller
Ab Roller 的每个实例都将与 Sets 有自己的关系,这对于每个课程来说都是不同的。
也许不是最好的例子,但应该可以更清楚地理解重复实例。
我在考虑拥有一个template 实体,然后是一个instance 实体,以及它们之间的关系——当template 实体name 更新时,所有instance 实体的name 都通过KVO 更新.或者我将所有共享属性(即name)放在关系中(因此instance 实体的name 属性返回其template 的name 属性),以便它们反映对template 的更改.最好的方法是什么?
【问题讨论】:
-
你能说明你想要达到什么目标吗?让所有气球同步它们的属性?还是相反?顺便说一句,当您提到“模板”时,您是什么意思?你能提供一些代码来突出不需要的行为吗?
-
如果我理解正确,这不是核心数据问题,而是数据库设计决策。如果你想让气球组共享一些属性——比如模板,你可以在数据库中创建新实体——ballon_template,多个气球将使用相同的模板。然后更改模板会更改多个气球。基本上你想使用关系。
-
我同意这更像是一个一般性的数据库问题,因为我没有过去 Core Data 构建数据模型的经验。我编辑了另一个我想要了解的示例,这有帮助吗?
-
你可以按照你最后说的做,把访问器改写成你想要的对象的名字,返回模板中存储的名字。所有对象都需要与模板有关系,并且模板必须是唯一的。
-
我将如何处理这些关系?假设
template与身体部位有关系。当访问instance以获取正文部分时,说instance.template.bodypart似乎很乱。我更喜欢instance.bodypart,这将返回来自template的关系。还是我应该在instance上写一个方便的方法并且不设置任何关系?
标签: ios entity-framework core-data database-design data-modeling