无法删除其他上下文中的对象
Posted
技术标签:
【中文标题】无法删除其他上下文中的对象【英文标题】:Cannot delete objects in other context 【发布时间】:2014-08-08 08:04:10 【问题描述】:我一直面临这个问题超过 3 个月。我搜索了很多并阅读了相关文档并访问了许多论坛,但找不到有效的解决方案。删除对象时出现典型的 NSManagedObject 错误。 NSManagedObjectContext 不能删除其他上下文中的对象。
我试图四处走动并尝试使用其 NSManagedObject ID 删除对象,但无济于事。
NSManagedObjectID *findingsSurveyDataItemApiId = [findingsSurveyDataItemApi objectID];
[self.managedObjectContext deleteObject:[self.managedObjectContext objectWithID:findingsSurveyDataItemApiId]];
谁能说出为什么上述解决方案仍然不起作用?
PS:我在应用中有两个托管对象上下文。
【问题讨论】:
【参考方案1】:我猜这可能是来自 Core Data 的误导性错误消息。如果要删除的对象尚未保存到持久化存储中,objectWithID
将不会返回有效对象,根据docs:
假定由 objectID 表示的持久存储中的数据存在 - 如果不存在,则返回的对象在您访问任何属性时(即触发故障时)抛出异常。
改用existingObjectWithID:error:
并在尝试删除它之前检查它是否返回一个非零对象。
【讨论】:
听起来很有说服力,可以试一试,检查临时 idBOOL isTemporary = [[managedObject objectID] isTemporaryID];
以上是关于无法删除其他上下文中的对象的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 apache http 服务器中 Location 标记中的上下文路径删除 url 中的空参数