1

我正在使用我的 iPhone 的核心数据创建一个简单的基于导航的应用程序,并且我正在尝试实现一些搜索。该应用程序基于 Apple 的“基于导航的应用程序”模板。NSFetchedResultsController 获取所有对象,它们将显示在表格视图中。我还留下了加号按钮来添加新对象。好吧,我已经实现了一个 UISearchBar 和一个 UISearchDisplayController,两者都在同一个中。搜索使用相同的 NSFetchedResultsController 过滤对象。NSPredicate 将在 UISearchDisplayController Delegate 方法中设置,但似乎尚未设置谓词,因为 fetchedResultsController 没有过滤任何内容。这是我的第一个问题。现在,如果我按下搜索栏的取消按钮并想通过按下加号按钮插入一个新对象,它不会去。不会插入任何对象,应用程序不会崩溃,它什么也不会发生。

我必须在一个视图中使用两个不同的 NSFetchedResultsController 吗?如果是,这并不能解决未设置 NSPredicate 的问题。我已经感谢你的帮助。

4

1 回答 1

4

如果您修改了获取请求(例如通过更改谓词),则需要创建一个新的获取结果控制器。
或者,您可以将获取的对象作为数组访问(使用fetchedObjects获取的结果控制器的属性)并根据搜索条件过滤该数组。这有一个额外的好处,即与 Apple 的表格搜索示例代码保持一致(因为他们使用数组来支持表格视图)。

于 2010-02-04T19:48:34.227 回答