存在不会在持久存储中更新的一对多关系的问题

Posted

技术标签:

【中文标题】存在不会在持久存储中更新的一对多关系的问题【英文标题】:Issue with a to-many relationship which not update in persistent store 【发布时间】:2015-07-02 09:41:19 【问题描述】:

我的项目中存在 Core Data 问题。

我有一个与 CDMBankAccount 对象(称为 bankAccounts)有一对多关系的 NSManagedObject 子类(称为 CDMPDFExportModel)。

当我使用一些银行帐户创建一个新的 CDMPDFExportModel,然后我保存上下文时,它工作正常。当我重新启动应用程序时,bankAccounts 保持不变。

但是当我编辑它们时,例如删除其中一个银行帐户,然后再次保存上下文(没有出现任何错误),它会一直工作,直到应用程序关闭。之后,当我重新启动它时,更改会恢复(仅针对 bankAccounts 关系),就好像上下文尚未保存到持久存储...

我只有bankAccount关系有这个问题,其他的工作正常(编辑后成功保存)......

我花了 2 天时间尝试修复它,但它仍然无法正常工作......

如果有人可以帮助我... :))

非常感谢

托马斯

编辑:我只在我的 iPhone 上遇到这个问题(它在模拟器上正常工作......)

【问题讨论】:

如果您不发布代码的 sn-p,很难弄清楚您做错了什么。但无论如何尝试将 CDMPDFExportModel 中的银行帐户对象设置为 nil 并保存上下文。 谢谢你的回答,我去试试。另外,我编辑了我的帖子,因为我注意到这个问题只发生在我的真实设备上(它在模拟器上运行良好)。这很奇怪.. 您的核心数据堆栈是什么样的?你什么时候存钱?您确定您的保存代码正在触发吗? 什么叫“核心数据栈”?在我的例子中,我有一个非常基本的配置,一个上下文连接到一个持久存储。在进行更改后立即保存上下文,并且代码运行良好,因为我得到了正确的 NSLog 语句,最重要的是,保存了其他更改(在托管对象的其他属性上).. 【参考方案1】:

我终于解决了我的问题!

事实上,我只需要创建CDMPDFExportModel.bankAccounts 的反向关系(作为多对多关系)。

我不知道为什么没有它它就不起作用(我不必使用这种反比关系,我什至没有声明动态属性),但它现在似乎工作正常......

感谢您的帮助

【讨论】:

以上是关于存在不会在持久存储中更新的一对多关系的问题的主要内容,如果未能解决你的问题,请参考以下文章

一对多数据库设计

教义没有在教义上创建一对多关系:模式:更新

hibernate一对多单向关联时更新问题

CoreData 和一对多关系的并发错误

Gae Jdo 对具有双向导航的一对多拥有关系的持久性

hibernate映射的 关联关系:有 一对多关联关系,一对一关联关系,多对多关联关系,继承关系