核心数据管理对象集

时间:2014-04-14 18:30:42

标签: core-data nsmanagedobject

我正在尝试编写一个简单的个人理财应用程序供我自己使用,并有以下问题,并想知道是否有人可以让我直截了当。

我的数据模型非常简单,我有“帐户”托管对象,它们有一个“事务”管理对象的NSSet,而这些对象又有一个“分裂”托管对象的NSSet。

“拆分”对象具有类别和金额,因此任何交易都可以由具有不同金额的多个类别组成。例如,交易总额为40英镑 - 25英镑 - 食品和15英镑 - 燃料等

“事务”托管对象还可以与另一个“事务”托管对象具有可选的1对1关系。这是我希望代表转移的时候。因此,我有2个'交易'对象具有相同的属性,如日期等,但每个属于不同的'帐户',所以当我查询帐户的交易列表时会显示。

我已经覆盖了'事务'托管对象上的相应setter,比如setDate,这样当调用它时,它会检查它是否有另一个链接到它的“事务”托管对象,如果有,也会更改日期该交易。这样,对一个交易所做的更改将反映在另一个账户交易中。

还在我身边..?现在问题在于事务的'split'对象的NSSet。

假设我在帐户A中创建了一个新交易。 我设置了交易的日期 我为交易创建了一个“拆分”对象,为了论证,它有20英镑的食物类别。 在我的用户界面中,我说这个交易是一个转移。这提示我选择要转移的帐户,我选择帐户B. 在后台,创建一个新的“事务”对象,其帐户设置为帐户B,我在帐户a中从原始事务复制日期等但我想将两个“事务”对象设置为指向同一个NSSet '分裂'。

那么,如果我改变其中一个交易的分割中的类别或金额,则反映在另一个交易中?对更简单属性的更改通过前面提到的setDate之类的setter来处理。 “事务”对象是否可以指向相同的NSSet拆分,还是在进行更改时手动必须同步更改两个集?

希望这是有道理的,感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您的关系需要很多:交易和拆分实体之间的关系很多。

如果你想这样做,那么最好创建自定义方法来设置传输和拆分,而不是试图覆盖。您需要根据对另一个对象关系的更改来编写关于如何更新一个关系的逻辑。配置关系后,另一端的对象很常见,因此对拆分实例的更改非常简单。

使用mogenerator将自定义代码分别管理到自动生成的代码也是一个好主意。

答案 1 :(得分:0)

我建议改变你的模型。

Transaction实体用于Split实体共享的数据,如日期和描述。每个交易总是至少有1个拆分(如果您进行系统双重记账,则每次交易2个)。您可以通过Split实体公开事务属性。

您的帐户实体与交易没有直接关系。它只与Split实体有直接关系。