辅助 UITableView 上的 NSFetchedResultsController - 如何查询数据?

Posted

技术标签:

【中文标题】辅助 UITableView 上的 NSFetchedResultsController - 如何查询数据?【英文标题】:NSFetchedResultsController on secondary UITableView - how to query data? 【发布时间】:2010-05-28 18:08:09 【问题描述】:

我正在创建一个具有多个屏幕的基于核心数据的导航 iPhone 应用程序。假设它是一个闪存卡应用程序。数据模型非常简单,只有两个实体:Language 和 CardSet。 Language 实体和 CardSet 实体之间存在一对多的关系,因此每个 Language 可能包含多个 CardSet。换句话说,Language 有一对多的关系 Language.cardSets 指向 CardSets 列表,CardSet 有关系 CardSet.language 指向 Language。

有两个屏幕: (1) 初始 TableView 屏幕,显示语言列表; (2) 辅助 TableView 屏幕,显示语言中的 CardSet 列表。

在列出语言的初始屏幕中,我使用 NSFetchedResultsController 使语言列表保持最新。屏幕将选择的语言传递到辅助屏幕。

在辅助屏幕上,我试图确定是否应该再次使用 NSFetchedResultsController 来维护 CardSets 列表,或者是否应该通过 Language.cardSets 简单地将列表从对象模型中拉出。后者在编程上最有意义,因为我已经有了语言 - 但它不会在更改时自动更新。

我查看了 NSFetchedResultsController 文档,似乎我可以轻松地创建基于属性的谓词 - 但不是关系。即,我可以创建以下 NSFetchedResultsController:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name LIKE[c] 'Chuck Norris'"];

如何通过直接关系(Language.cardSets)访问我的数据,并使用 NSFetchedResultsController 自动更新表?这可能吗?

【问题讨论】:

【参考方案1】:

如果您在详细信息中使用NSFetchedResultsController,您会自动收到有关该组的任何更改的通知,这是一个净赢。我个人会使用第二个NSFetchedResultsController 只是为了方便。

【讨论】:

最后,我只使用了NSFetchedResultsController 并假设我的实体具有唯一名称。 你可以告诉下层 NSFetchRequest 只返回唯一值。不确定您是否知道该标志。

以上是关于辅助 UITableView 上的 NSFetchedResultsController - 如何查询数据?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode UI 测试:UITableViewCell 上的辅助功能查询失败

全局设置按钮的背景颜色,除了 UITableView 中的辅助按钮

NSfetch 请求返回相同的数据总是不返回更新的数据

UITableView 作为另一个 UITableView 上的单元格取消滚动

UITableView 上的 UIAccessibility 实现

UITableView 标头上的自动布局