避免获取已删除的 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的主要内容,如果未能解决你的问题,请参考以下文章

仅作记录,游标,级联删除,获取所有该外键的表名

SQL 通过多个 DELETE 查询获取文件中已删除行的总数

使用 IMAP 获取邮件,获取已删除的邮件

Firebase 身份验证获取已删除的用户

核心数据获取已删除对象

如何恢复已删除的文件?