这可能是一个简单的问题,但经过大量的搜索后,我仍然对正确的答案感到困惑。
我有一个使用Core Data的应用程序和一个由NSFetchedResultsController填充的UITableView。我想在桌面视图的顶部添加一个搜索栏,并使用搜索栏和搜索显示控制器在桌面视图中实时过滤数据
我想知道的是这样做的正确方法是什么?
我见过的大多数示例每次搜索词都发生变化时都会修改NSFetchRequest谓词?这似乎会增加所有请求的大量开销
苹果示例似乎只涉及基于数组搜索tableview结果。
我应该基于fetchedObjects创建一个数组并搜索该数组并将过滤后的结果放入另一个数组中。
非常感谢提前 马特
答案 0 :(得分:0)
不要太早优化。
更改获取请求的谓词。 NSFetchResultsController非常适合最小化对CoreData的访问。
让它工作后,使用仪器隔离任何性能问题。
如果您自己搜索对象数组,则必须将每个对象都置于内存中,然后全部搜索它们。是的,您仍然需要搜索所有内容,但让CoreData执行此操作,因为它几乎总是更快。
修改强>
关于iOS应用开发的斯坦福iTunes U课程是免费视频教学的好选择。 Ray Wenderleich在这里有一个很好的教程,专门讨论NSFetchedResultsController:http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller