如何通过 NSPredicate 过滤 Core Data 托管对象?

Posted

技术标签:

【中文标题】如何通过 NSPredicate 过滤 Core Data 托管对象?【英文标题】:How to filter Core Data managed objects by NSPredicate? 【发布时间】:2011-06-03 06:30:53 【问题描述】:

我需要通过 NSPredicate 过滤 Core Data 中的托管对象。我尝试了以下两种方法来完成过滤任务。

在获取请求过程中应用 NSPredicate。

在获取结果控制器提供的所有托管对象的数组中使用 NSPredicate。

哪种方法更有效?

谢谢

【问题讨论】:

【参考方案1】:

我想在获取请求上使用 NSPredicate 会更节省内存,因为这些对象永远不会加载到内存中。

【讨论】:

+1 fetch 中的谓词非常多,即数千倍,效率更高。一方面,您不必实例化每个托管对象来测试它,如果您在内存中进行,则必须按照您必须的方式进行测试。理论上,您可以针对任意大的持久性存储进行获取,而内存中仅限于即时应用资源。

以上是关于如何通过 NSPredicate 过滤 Core Data 托管对象?的主要内容,如果未能解决你的问题,请参考以下文章

Core Data NSPredicate 过滤结果

Core Data NSPredicate 按数组中的项目过滤项目集

SwiftUI Core Data - NSPredicate 动态过滤字符串数组属性包含给定字符串的位置

如何使用 NSPredicate 通过 CoreData 中的 NSSet 属性的元素过滤对象?

如何过滤从 Core Data 获取的数据?

如何制作正确过滤本地字符的 NSPredicate?