如何使用UISearchDisplayController/UISearchBar过滤NSFetchedResultsController(CoreData)的内容

149
我正在尝试在基于CoreData的iPhone应用程序中实现搜索代码。在更改太多代码之前,我想确保我走在正确的道路上。该应用程序已经拥有一个带有谓词的NSFetchedResultsController来检索主要TableView的数据。由于许多示例都是基于数组而不是CoreData,所以我感到困惑。
以下是一些问题:
1. 我是否需要另一个仅检索匹配项的NSFetchedResultsController,还是可以使用与主TableView相同的控制器?
2. 如果我使用相同的控制器,是否只需清除FRC缓存,然后在handleSearchForTerm:searchString方法中更改谓词即可?谓词是否必须包含初始谓词和搜索术语,或者它会记住首次检索数据时使用的谓词?
3. 如何返回原始结果?只需将搜索谓词设置为nil吗?这样做是否会破坏最初用于检索FRC结果的原始谓词?
如果有任何人有使用FRC进行搜索的代码示例,我将不胜感激!

@Brent,完美的解决方案,对我非常有效! - DetartrateD
11个回答

0

我认为Luka对此有更好的方法。请参见LargeDataSetSample他的原因

他不使用FetchedResultsController,而是在搜索时使用缓存,因此当用户在SearchBar中输入更多内容时,搜索结果会出现得更快。

我在我的应用程序中使用了他的方法,效果还不错。另外,请记住,如果您想使用模型对象,请尽可能简单,参见我的关于setPropertiesToFetch的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接