0

我正在使用语句删除 NSManagedObject

[managedObjectContext deleteObject:obj];

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

[managedObjectContext refreshObject:obj mergeChanges:YES];

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

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

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

谁能帮我吗?提前致谢!

4

1 回答 1

2

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

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

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

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

于 2012-12-01T21:06:09.267 回答