我是使用Core Data的新手,我正在使用UITableView . 我有一个带有UISegmentedController的工具栏,我想根据所选索引过滤UITableView中的项目 . 换句话说,假设我有一个显示Books(存储在Core Data中)的UITableView和一个带有段的UISegmentedController,以“English”,“Spanish”和“French”显示书籍 .
什么方法让一切都搞定了?单击其中一个段时,如何在UISegmentedControl的目标中进行更改?
对不起,如果这是一个愚蠢的问题!
4 回答
您可以使用
NSFetchedResultsController
,当您单击片段时,只需设置不同的perdicate并再次执行提取 .我会为每个段使用单独的
NSFetchedResultsController
. 这将允许您利用每个段的内置缓存并提高性能 .除了Apple的文档(和我的书)之外,您还可以从我在PragPub杂志上的文章_2662198中阅读它们 .
为每个过滤器使用三个不同的阵列是个好主意 . 将它们缓存到某处,以便在用户选择过滤器时无延迟 . 要从CoreData商店中查找您要查找的信息,请使用NSPredicate .
我使用上面Marcus的指南实现了这个(我是新手,所以它可能不是最好的方法) . 我有一个段控制器,有三个选项,分别用于'打开','进行中'和'关闭' .
在ViewController.h中,为每个段选项创建一个iVar,为将存储当前控制器的主控制器创建一个iVar .
在ViewController.m中,您需要为延迟加载这些控制器创建方法,所以我总共有三个 . 除了谓词和cacheName之外,它们基本相同,我只在下面显示了一个 .
为您的段创建一个IBAction,以便在更改它时更改获取的结果控制器并重新加载表 .
而已!
注:我还将此行添加到我的ViewDidLoad方法中,以便它最初将正确的选项加载到fetchedResultsController中 .