无法删除其他上下文中的对象

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: 并在尝试删除它之前检查它是否返回一个非零对象。

【讨论】:

听起来很有说服力,可以试一试,检查临时 id BOOL isTemporary = [[managedObject objectID] isTemporaryID];

以上是关于无法删除其他上下文中的对象的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 apache http 服务器中 Location 标记中的上下文路径删除 url 中的空参数

从列表中的对象中删除字节顺序标记

无法删除表,因为其他对象依赖于它

Django,Sqlalchemy:无法删除表 ganalytics_article,因为其他对象依赖于它

无法使用 Mongoose 删除数组中的对象

无法使用 $pull (Mongoose) 为用户模型删除数组中的对象