核心数据无法保存 NSManagedObjectContext

Posted

技术标签:

【中文标题】核心数据无法保存 NSManagedObjectContext【英文标题】:Core data can't save NSManagedObjectContext 【发布时间】:2011-06-27 19:13:21 【问题描述】:

所以我解析了一个 xml 并创建了一堆具有“用户 has_many 徽章”之类的关系的 ManagedObjects,该应用程序可以使用刚刚解析的数据很好地显示每个用户的个人资料。但是,如果我从多任务栏中关闭应用程序并重新打开它。数据没了。没有警告。我应该从哪里开始调试?谢谢。代码如下: [self parseXML]; [appDelegate saveContext];

详细信息:这是我创建核心数据模型的方式:我使用了来自 xcode 的模板中的代码。每个用户都有很多徽章,但我没有从徽章到用户的反向关系。在我解析了 xml 并创建了所有带有徽章的用户之后,该应用程序可以从上下文中提取数据并生成带有徽章和所有内容的配置文件视图。

问题:

当我从多任务栏关闭应用程序后,核心数据将存储所有用户属性,如项目和电话,除了徽章。徽章是一个单独的实体。谢谢。

已解决:设置反向关系后问题自行解决。如果我弄乱了其他代码,想不出其他原因可能会导致问题。

【问题讨论】:

这里没有足够的信息来回答这个问题,你是如何创建你的核心数据对象的? 【参考方案1】:

事情不多,但是:

如果 Core Data 对象图除了不持久化数据之外,它还能以所有方式工作,那么问题几乎必须在持久化存储本身的级别上。

(1) 确保您没有内存中的持久存储。顾名思义,这种类型的商店没有任何持久性。对象图将起作用,上下文将执行保存操作,但没有任何内容写入磁盘。查看initWithPersistentStoreCoordinator:configurationName:URL:options方法查看店铺类型和位置。

(2) 使你没有将store 放在app 目录下的cache 或tmp 文件夹之一。这些文件夹将被定期清除。

如果您只是将 Xcode 模板中的样板用于 Core Data 项目,您应该不会遇到这些问题,因为模板会在 Documents 目录中创建一个 sqlite 持久存储文件。

【讨论】:

谢谢,我已经更新了更多细节。但我认为 store 还不错,因为它可以存储用户的所有其他属性,除了 badges 属性。

以上是关于核心数据无法保存 NSManagedObjectContext的主要内容,如果未能解决你的问题,请参考以下文章

无法将值保存到核心数据

核心数据 MOC 保存暂停执行并且无法保存(无错误或崩溃)

无法识别的选择器 - 保存到核心数据

核心数据无法保存 NSManagedObjectContext

无法将自定义对象从 API 保存到核心数据

基于核心数据文档的应用程序:保存,但无法加载