避免获取已删除的 NSManagedObject
Posted
技术标签:
【中文标题】避免获取已删除的 NSManagedObject【英文标题】:Avoid fetching deleted NSManagedObjects 【发布时间】:2012-02-23 14:34:54 【问题描述】:使用NSFetchRequest
,是否可以避免获取已或将删除的NSManagedObject
?
我知道可以检查-isDeleted
或-managedObjectContext
是否返回 nil,但有没有办法在数据库层执行此操作?
【问题讨论】:
在获取之前尝试保存上下文。 我宁愿打电话给-processPendingChanges
,这不是问题的答案。
【参考方案1】:
从技术上讲,如果对象被真正删除,它将不会显示在数据库层。问题的症状是什么?
【讨论】:
也许“数据库层”这个短语具有误导性。我想知道是否有可能避免获取将在下一次保存操作时从存储中删除的对象。 仍然不确定您为什么要这样做。如果您的应用程序是多线程的,则任何对象都可能被删除(从而变成故障)。如果您使用的是NSManagedObjectContext
,那么正如 Costique 所说,首先保存它至少可以确保待处理的删除被推送到NSPersistentObjectStoreCoordinator
。无论如何,待处理的删除只有NSManagedObjectContext
知道,而不是对等那些挂在同一个持久存储上的。您能否详细说明究竟是什么问题导致您希望 fetch 以这种方式工作?
我正在与网络服务同步,在任意时间插入和删除对象。 UI 正在观察上下文的变化,并在发生特定变化时创建获取请求。但是,此请求还会返回要在下一次保存时删除的对象,我宁愿在请求中过滤掉它们,而不是在获取之后。以上是关于避免获取已删除的 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章