将更改 NSManagedObject 保存到核心数据失败

Posted

技术标签:

【中文标题】将更改 NSManagedObject 保存到核心数据失败【英文标题】:Save changed NSManagmentObject to core data Fails 【发布时间】:2012-03-21 09:50:52 【问题描述】:

你能帮我解决我的问题吗?我有服务将所有请求结果缓存到核心数据。我使用 RestKit 来做到这一点。除保存外,一切正常。然后我尝试更改对象中的某些属性,然后将其保存为 NSManagedObjectContext 保存方法,但如果我在保存更改后查看此对象,我会看到:

<User: 0xcedf910> (entity: User; id: 0xcede9f0 <x-coredata://904DBCDF-F1CF-4F2B-B173-2994FE47DEC8/User/p1800> ; data: <fault>)

然后尝试从上面的对象获取数据我出错了:

*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0xcedbce0 <x-coredata://904DBCDF-F1CF-4F2B-B173-2994FE47DEC8/User/p1722>

获取对象的代码:

[objectManager.objectStore objectsForResourcePath:path]

有什么帮助吗?谢谢你。

【问题讨论】:

这似乎是 NSManagedObjectContext 保存在 RestKit 中的错误 【参考方案1】:

NSObjectInaccessibleException,就是这个意思。

您可能创建了一个 NSManagedObject 并将其放在上下文中,可能在某处保存了对它的引用。然后它从上下文中删除并且没有保存,您尝试再次访问它。

【讨论】:

我做了一个 fetch requet [objectManager.objectStore objectsForResourcePath:path] 然后更改从请求返回的某个对象中的一个属性。然后保存[[RKObjectManager sharedManager].objectStore save];。之后 (entity: User; id: 0xcede9f0 ; data: ) 如果我尝试从从这个 fetch 请求返回的任何对象都会被它崩溃(

以上是关于将更改 NSManagedObject 保存到核心数据失败的主要内容,如果未能解决你的问题,请参考以下文章

核心数据 NSManagedObject 更改

将 NSManagedObject 更新为核心数据

神奇的记录 NSFetchedResultsController NSManagedObject 更改保存不工作

保存对 NSManagedObject 的更改

核心数据 NSManagedObject - ObservedObjects 未更新

NSManagedObject 保存在核心数据中但属性错误