辅助 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 中的辅助按钮
UITableView 作为另一个 UITableView 上的单元格取消滚动