我有一个带有NSFetchedResultsController数据源的tableview,显示了底层Core Data SQLite存储中的名称列表。我已经实现了一个搜索栏。在搜索栏中输入第一个字符时,将执行以下形式的提取请求:
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"name beginswith[cd] %@", searchText];
然而,当输入第二个搜索字符时,我想过滤fetchedResultsController的获取对象,而不是执行另一个获取请求(实现另一个获取请求,类似于上面的1,导致另一次访问商店我希望不会发生这种情况,因为第二次获取的结果只是第一次获取的一个子集。有没有过滤fetchedResultsController,以避免另一次商店之旅?
答案 0 :(得分:2)
是的,设置搜索“状态”,然后将NSTableViewDatasource
切换为指向从-fetchedObjects
返回的NSFetcResultsController
过滤掉的数组。
然后,您可以在用户输入更多信息时更新该阵列上的过滤器,并且不会返回到商店。这甚至可以让您对输入的第一个字符进行过滤,甚至可以避免不必要的商店之旅。
答案 1 :(得分:1)
您始终可以将第一次获取的结果存储到数组中,当搜索栏中的文本发生更改时,使用另一个谓词过滤数组的内容。