NSFetchedResultController 和 UISearchBar 实现
Posted
技术标签:
【中文标题】NSFetchedResultController 和 UISearchBar 实现【英文标题】:NSFetchedResultController and UISearchBar implementation 【发布时间】:2010-02-04 09:53:42 【问题描述】:我正在使用我的 iPhone 的核心数据创建一个简单的基于导航的应用程序,并且我正在尝试实现一个小搜索。 该应用程序基于 Apple 的“基于导航的应用程序”模板。 NSFetchedResultsController 获取所有对象,它们将显示在表格视图中。我也离开了加号按钮来添加新对象。 好吧,我已经实现了一个 UISearchBar 和一个 UISearchDisplayController,两者都在同一个中。搜索使用相同的 NSFetchedResultsController 来过滤对象。 NSPredicate 将在 UISearchDisplayController Delegate 方法中设置,但似乎尚未设置谓词,因为 fetchedResultsController 没有过滤任何内容。这是我的第一个问题。 现在,如果我按下搜索栏的取消按钮并想通过按下加号按钮插入一个新对象,它不会去。不会插入任何对象,应用程序不会崩溃,它什么也不会发生。
我必须在一个视图中使用两个不同的 NSFetchedResultsController 吗?如果是,这并不能解决未设置 NSPredicate 的问题。 我已经感谢你的帮助了。
【问题讨论】:
【参考方案1】:如果您修改了获取请求(例如通过更改谓词),您需要创建一个新的获取结果控制器。
或者,您可以将获取的对象作为数组访问(使用获取的结果控制器的fetchedObjects
属性)并根据搜索条件过滤该数组。这有一个额外的好处,那就是与 Apple 的 sample code 更一致地进行表搜索(因为他们使用数组来支持表视图)。
【讨论】:
以上是关于NSFetchedResultController 和 UISearchBar 实现的主要内容,如果未能解决你的问题,请参考以下文章
NSFetchedResultController - 对 2 个属性进行自定义排序
如何使用 NSArraycontroller 在可可上创建 NSFetchedresultController?
NSFetchedResultController 和 UISearchBar 实现
一个用于 UITableview 和 UISearchDisplayController 的 NSFetchedResultController