使用来自两个实体的 NSFetchedResultsController(s)
Posted
技术标签:
【中文标题】使用来自两个实体的 NSFetchedResultsController(s)【英文标题】:Using NSFetchedResultsController(s) from two entities 【发布时间】:2012-09-09 08:25:36 【问题描述】:我在 UITableView 中显示用户的状态消息和这些消息的 cmets,并尝试使用 Core Data 保存数据。 我刚刚学习了如何在 UITableView 中使用 NSFetchedResultsController,但是大多数使用 NSFetchedResultsController 的情况只是针对一个实体。 我想将用户的状态消息存储在一个实体中,并将 cmets 存储在另一个实体中,并将 UITableView 划分为多个部分:每个状态消息一个部分。每个部分的第一行(UITableViewCell)是状态消息,同一部分的其他行是该消息上的 cmets:如下所示
status message 1
comment
comment
...
comment
status message 2
comment
comment
...
comment
...
我想我必须使用两个 NSFetchedResultsController——一个用于状态消息,一个用于 cmets——但不知道如何为 cmets 设置 NSFetchedResultsController。 有什么好主意吗?
【问题讨论】:
【参考方案1】:UITableView
已有节和节标题。如果您在每个部分的部分标题中显示状态消息,并且仅在表格视图行中显示 cmets,您的任务将变得容易得多。
“评论”只需要一个获取的结果控制器,但您必须设置 FRC 的 sectionNameKeyPath:
并提供排序描述符以根据状态消息将 FRC 的结果分组到部分中。
【讨论】:
谢谢马丁,但问题是部分标题在垂直滚动期间浮动,我不希望它,因为有时状态消息足够长,表格视图单元格会填满整个屏幕。 :( @josh:好的。您可以为每个状态对象添加一个虚拟注释对象,该对象在该状态的所有 cmets 中首先排序。那么您只需要一个 FRC 进行评论,虚拟评论单元格会显示状态消息。 感谢您的想法。我正在考虑将 cmets 中的两个状态消息保存为同一个实体,这需要更通用。如果不顺利,我会尝试你的建议。谢谢!以上是关于使用来自两个实体的 NSFetchedResultsController(s)的主要内容,如果未能解决你的问题,请参考以下文章
使用实体框架代码首先获得来自同一个父表的两个外键,而无需指定父实体上的集合