使用NSFetchedResultsController和Search Display Controller搜索CoreData

时间:2012-04-23 09:51:21

标签: iphone objective-c ios core-data nsfetchedresultscontroller

这可能是一个简单的问题,但经过大量的搜索后,我仍然对正确的答案感到困惑。

我有一个使用Core Data的应用程序和一个由NSFetchedResultsController填充的UITableView。我想在桌面视图的顶部添加一个搜索栏,并使用搜索栏和搜索显示控制器在桌面视图中实时过滤数据

我想知道的是这样做的正确方法是什么?

我见过的大多数示例每次搜索词都发生变化时都会修改NSFetchRequest谓词?这似乎会增加所有请求的大量开销

苹果示例似乎只涉及基于数组搜索tableview结果。

我应该基于fetchedObjects创建一个数组并搜索该数组并将过滤后的结果放入另一个数组中。

非常感谢提前 马特

1 个答案:

答案 0 :(得分:0)

不要太早优化。

更改获取请求的谓词。 NSFetchResultsController非常适合最小化对CoreData的访问。

让它工作后,使用仪器隔离任何性能问题。

如果您自己搜索对象数组,则必须将每个对象都置于内存中,然后全部搜索它们。是的,您仍然需要搜索所有内容,但让CoreData执行此操作,因为它几乎总是更快。

修改

关于iOS应用开发的斯坦福iTunes U课程是免费视频教学的好选择。 Ray Wenderleich在这里有一个很好的教程,专门讨论NSFetchedResultsController:http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller