如何一起使用NSFetchedResultsController和UISearchController?

Nic*_*ico 9 core-data ios swift

我有一个包含tableView的视图.我NSFetchedResultsController用来显示Core Data的结果.

我想添加一个UISearchController(不是UISearchDisplayController因为这个在iOS 8中已被弃用),但我不知道如何链接它们.

我应该只有一NSFetchedResultsController两个吗?我想有一种方法可以获取所有数据,NSFetchedResultsController然后根据UISearchController我的错误对它们进行排序?

感谢您的帮助,您可以给我这个.

pba*_*sdf 9

一些想法......

创建resultsControllerfor时searchController,可以将要搜索的数据传递给它.如果您NSFetchedResultsController在主表中使用a ,则可以传递该fetchedObjects数组.然后,为了响应搜索文本的更改,您可以过滤数组(您可以使用谓词并使用filteredArrayUsingPredicate搜索结果创建单独的数组,或者您可以遍历数组来构建它).此路由的缺点是(除非您手动实现),搜索结果将不会分成单独的部分,并且如果基础数据发生更改(例如,在后台线程上),搜索结果将不会自动更新.

我想你可以有第二个NSFetchedResultsController:这将有助于使用部分,并且可能允许结果自动更新(使用委托方法),例如,如果您的数据在后台更新.但我会对它引入的复杂性感到紧张.

如果您选择原位搜索(即,指定resultsController= nil),则另一个选项是使用搜索条件来更新NSFetchedResultsController自身(即修改基础谓词并重新执行获取).这样你的搜索表看起来和感觉就像主表一样(包括部分,如果你使用它)但显示的行显然会随着搜索条件变得更精细而减少.如果您有大型数据集,此选项需要注意确保FRC正确重建,并且在性能方面可能是不可接受的.