【问题标题】:Using NSFetchedResultsController(s) from two entities使用来自两个实体的 NSFetchedResultsController(s)
【发布时间】: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。 有什么好主意吗?

【问题讨论】:

    标签: ios core-data nsfetchedresultscontroller


    【解决方案1】:

    UITableView 已有节和节标题。如果您在每个部分的部分标题中显示状态消息,并且仅在表格视图行中显示 cmets,您的任务将变得容易得多。

    “评论”只需要一个获取的结果控制器,但您必须设置 FRC 的 sectionNameKeyPath: 并提供排序描述符以根据状态消息将 FRC 的结果分组到部分中。

    【讨论】:

    • 谢谢马丁,但问题是部分标题在垂直滚动期间浮动,我不希望它,因为有时状态消息足够长,表格视图单元格会填满整个屏幕。 :(
    • @josh:好的。您可以为每个状态对象添加一个虚拟注释对象,该对象在该状态的所有 cmets 中首先排序。那么您只需要一个 FRC 进行评论,虚拟评论单元格会显示状态消息。
    • 感谢您的想法。我正在考虑将 cmets 中的两个状态消息保存为同一个实体,这需要更通用。如果不顺利,我会尝试你的建议。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2012-02-18
    相关资源
    最近更新 更多