0

我对核心数据中的继承和关系有点困惑,我希望有人能走上正确的道路。在我的应用程序中,我创建了 3 个实体,它们都没有(并且不应该有)公共属性,但是对于用户所做的所有工作,都会有一个保存和一个加载按钮。据我了解,我需要将所有“工作”实体“包装”到一个用于保存和加载的对象中,我的问题是,我是否需要在实体之间创建关系?因为我必须以某种方式将它们联系起来,这对我来说很有意义。我的逻辑正确吗?

我正在实现一个预算计算器,为了让每个人都了解我的问题是什么,我将举一个实际的例子,如果我的逻辑不正确,请纠正我:

假设您是水果销售商,因此拥有客户数据库以及包含您销售的水果种类的水果数据库是很正常的。据我了解,我在这里找到两个实体:

具有以下属性的客户端name: 、addressphoneemail等。

具有以下属性的股票name: , weight, stock, cost, supplier, 等。

TheBudget具有名为:nameamounttypecostdelivery等的属性。

我没有放所有属性,因为我认为您明白了。我的意思是如你所见,我只能继承两个属性;其余的不一样。所以,如果我为一个客户做预算,我可以拥有尽可能多的客户以及库存数量,但实际预算呢?

如果我的解释不是很清楚,我很抱歉,但如果是……我应该建立什么样的关系?我认为Client并且TheBudget有联系。你有什么建议?

4

1 回答 1

2

这并不完全正确,但有些部分是在正确的轨道上。我将您的问题分为三个部分:关系、继承和托管对象上下文,希望能帮助您分别理解每个部分:

关系

关系通常用于表示一个实体可以“属于”另一个实体(即员工可以属于一家公司)。您可以设置多个一对多关系(即员工属于公司和老板),您可以设置反向关系(最好用“拥有”或“拥有”一词来描述,例如“一家公司”有很多员工)。

根据您的需要,还有许多更复杂的关系以及一整套删除规则,您可以告诉系统在删除关系中的实体时遵循这些规则。刚开始时,我发现像上面描述的那样坚持一对一和一对多的关系是最容易的。

遗产

继承最好被描述为一种用于其他更具体实体的基本模板。您说得对,您可以使用继承作为一种协议来定义一些在许多实体中通用的基本属性。一个很好的例子是有一个基类“Employee”,它具有“name”、“address”和“start date”属性。然后,您可以创建从该 Employee 实体继承的其他实体,例如“Marketing Rep”、“HR”、“Sales Rep”等,它们都具有通用属性“name”、“address”和“start date”,而没有在每个单独的实体上创建这些属性。然后,如果您想更新模型并添加、删除或修改公共属性,

托管对象上下文(即保存)

现在,到您的问题/陈述的另一部分:将所有实体包装到一个对象中,该对象将用于保存和加载。你不需要创建这个对象,核心数据专门为此目的使用了 NSManagedObjectContext(简称 MOC)。MOC 的任务是跟踪您创建、删除和修改的对象。为了保存您的更改,您只需save:在 MOC 上调用该方法。

如果您发布您的实体及其所做的事情,我也许可以帮助就如何在核心数据中设置它提出建议。在初始开发过程中,您希望尽最大努力设置尽可能健壮的核心数据模型。操作系统需要能够“升级”后备存储以合并您在核心数据模型修订版之间所做的任何更改。如果您在最初设置核心数据模型并以这种方式发布代码方面做得不好,那么当应用程序在野外时尝试进行复杂的模型更新可能会非常困难(您可能已经猜到了,这是从痛苦的经历中产生的建议:)

于 2013-07-06T02:27:07.853 回答