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 删除无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
删除对象的 CoreDataGeneratedAccessors 似乎没有被删除
通过 didSelectRowAtIndexPath 将 NSManagedObject 添加到 NSMutableArray