核心数据 - 单个实体的多个条目

Posted

技术标签:

【中文标题】核心数据 - 单个实体的多个条目【英文标题】:Core Data - Multiple Entries for a Single Entity 【发布时间】:2013-03-11 20:53:02 【问题描述】:

所以在我的应用中,我有一个名为 Cards 的实体和另一个名为 Transactions 的实体。

交易实体具有以下属性:日期、位置和金额。因此,如果用户在 10 个地点消费,我需要在单张卡的 Transactions 中有 10 个条目。

我刚开始使用 Core Data,它变得一团糟。

我还使用 MagicalRecord 来处理 Core Data。

我能够对卡片实体进行 CRUD、添加、更新等...一切都很好。

问题是,我需要将交易添加到卡中,但不知道如何从这种关系开始。如何将交易添加到卡中,然后获取包含所有交易的卡?

任何见解将不胜感激。

【问题讨论】:

【参考方案1】:

如果我理解正确,那么你就可以在它们之间建立关系。

Card -> Transaction 是一个多对多关系。有关此选项,请参见 xcode 中的右侧窗格。 添加一个逆。总是添加一个逆。所以你有一个非多对多关系 交易 -> 卡 对?每次交易只有一张卡?

答案的其余部分取决于您访问数据的方式。我建议为每个实体创建一个模型类。你知道如何?单击实体,然后转到文件/新建/文件,选择核心数据,然后选择 NSManagedObjectSubclass,它将为您创建。此类具有添加相关项目的方法。

myTransaction.card = myCard; 分别 [myCard addTransactionsObject:myTransaction];

当然假设 myCard 和 myTransaction 是类,并且您的一对一关系被命名为卡片,而对多关系被命名为事务。

【讨论】:

【参考方案2】:

只需设置从CardTransaction 实体的一对多关系,然后使用该关系简单地获取您的所有(先前由[card addTransactionsObject:newTransaction] 调用添加)事务:card.transactions

不要忘记添加从TransactionCard 的反比关系!

【讨论】:

以上是关于核心数据 - 单个实体的多个条目的主要内容,如果未能解决你的问题,请参考以下文章

具有多个相似实体或单个大型实体的核心数据

如何将来自多个视图控制器的数据保存到单个核心数据实体中

核心数据保存和加载到多个实体

使用用户信息条目记录核心数据实体属性

从出现在 NSPopUpButton 列表中的核心数据实体中过滤条目

核心数据添加和检索到多个表如何