NSManagedObject 删除无法正常工作

Posted

技术标签:

【中文标题】NSManagedObject 删除无法正常工作【英文标题】:NSManagedObject delete not working properly 【发布时间】:2012-09-27 14:36:09 【问题描述】:

我正在使用语句删除一个 NSManagedObject

[managedObjectContext deleteObject:obj];

然后将更改存储到该持久存储中。当我尝试使用一些数据库查看器查看我的实际表时,我可以看到该对象仍然存在于表中。我很困惑,我在删除后进行了刷新调用,如下所示(就在保存到持久存储之前)。

[managedObjectContext refreshObject:obj mergeChanges:YES];

当我现在尝试查看表格时,我看不到对象。它现在可以工作了,但我很困惑,原因有两个。

1:我正在删除许多其他地方的许多对象,并没有在每个地方都进行刷新,尽管我正在保存到持久存储中。

2:我不明白刷新已删除对象的概念。

谁能帮帮我?提前致谢!

【问题讨论】:

【参考方案1】:

如果没有更多的上下文就不容易回答。

也就是说,如果您删除了一个托管对象,那么 fetchedResultsController 将不会被更新,除非它们是在同一个 managedobjectContext 上创建的。换句话说,如果从两个不同的托管上下文发出两个数据库提取,则数据库状态的视图将不同步。

我建议您检查一下是否是这种情况。

此外,您不必执行刷新 - 除非在非常特殊的情况下 - NSFetchresultController 会收到有关数据库更改的通知,前提是您实现了 NSFetchedResultsControllerDelegate 协议。

【讨论】:

以上是关于NSManagedObject 删除无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

删除 NSManagedObject 时的附加操作

删除对象的 CoreDataGeneratedAccessors 似乎没有被删除

NSManagedObject 无法识别的选择器发送到实例

通过 didSelectRowAtIndexPath 将 NSManagedObject 添加到 NSMutableArray

自定义 NSManagedObject 类从 NSOrderedSet 添加/删除对象

[NSManagedObject sayHello]:无法识别的选择器发送到实例 0x