如何使用 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