如何使用 NSFetchedResultsController 制作顺序过滤器

Posted

技术标签:

【中文标题】如何使用 NSFetchedResultsController 制作顺序过滤器【英文标题】:How to make sequential filters with NSFetchedResultsController 【发布时间】:2011-01-04 00:12:01 【问题描述】:

我想使用 NSFetchedResultsController 制作顺序过滤器。目标是首先显示更相关的结果。

例如: 实体人:姓名-国家

1) 搜索字符串中包含姓名的人。 2)国家包含搜索字符串的人。

按顺序,我的意思是我希望首先获得搜索结果 1),然后是 2)。

我不知道这样做的正确方法,因为您使用 1 个 NSFetchRequest 初始化 NSFetchedResultsController。但在这里,我需要 2 个 NSFetchRequest。使用 2 个请求的另一个问题是我可以使用第二个请求生成重复项。

是否可以使用 NSFetchedResultsController 来处理?

谢谢

这是一个例子:

记录 1: 姓名:彼得 国家:毛里求斯

记录 2: 姓名:马克 国家:毛里塔尼亚

记录 3: 姓名:莫琳 国家:比利时

如果用户在搜索栏中输入“ma”:

我想先显示名称结果,然后显示国家/地区结果。

所以这里的结果应该是这样的:

    马克(“MA”rc) 莫琳(“MA”ureen) 彼得(“MA”uritius)

【问题讨论】:

【参考方案1】:

这里有两个不同的事情:过滤和排序。

您可以通过在 NSFetchRequest 上调用 setSortDescriptors 来进行排序。它需要一组排序描述符,每个描述符对应名称或国家或其他任何内容。

过滤是通过谓词完成的。在你的 NSFetchRequest 上使用setPredicate:。你只能得到一个谓词,但它可以有多个使用 and 和 or 的条件。

【讨论】:

感谢您的回答。但这不是我的问题。我想做的是顺序请求。我用一个更相关的例子编辑了我的问题。

以上是关于如何使用 NSFetchedResultsController 制作顺序过滤器的主要内容,如果未能解决你的问题,请参考以下文章

启动 Core Data 应用程序时在后台配置 NSFetchedResultsController

为啥不能两次获取相同的数据? NSFetchedResultsController 为空

[精选] Mysql分表与分库如何拆分,如何设计,如何使用

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]