【问题标题】:How to add additional objects with fetch result controller fetched objects list?如何使用获取结果控制器获取对象列表添加其他对象?
【发布时间】:2019-09-05 06:05:03
【问题描述】:

我有一个名为“事件”的实体,它具有开始和结束日期属性。我必须通过在 UI 中按日期对事件进行分组来显示事件列表。我正在使用NSFetchedResultsController 来获取和列出事件。

假设一个事件的开始日期是今天和明天的结束日期,这里我需要在 UI 中的两个不同日期显示这个事件,但我在数据库中只有一个条目。

我真的不想为一个事件创建多个条目,并且我希望使用获取结果控制器,因为它可以减少大量手动计算。有没有办法解决这个问题?

【问题讨论】:

  • 每天使用数组,在各自的小时间隔内放置事件...这意味着您将有两个“事件”在数组中,尽管您的数据库中只有一个,当开始时间是“今天”时结束时间是“明天”。否则我认为你不能自动处理结果。
  • 这是使用数组处理它的一种方法,但我希望它使用 NSFetchedResultsController 获取的对象来解决它。我的应用程序将在后台不断更新数据,因此使用 NSFetchedResultsController 将是刷新 UI 的非常方便的解决方案。如果我没有找到,那么最终我会在一个数组中维护它

标签: ios swift core-data nsfetchedresultscontroller nsmanagedobject


【解决方案1】:

NSFetchedResultsController 很好地将NSManagedObjects 与 tableView 的 indexPaths 匹配。但是,映射是一对一的,因此任何给定的 Event 只能在 indexPaths 中出现一次。为了实现你想要的,你需要创建一个新实体,比如EventDate,具有从EventEventDate 的一对多关系。定义一个字符串属性,它反映日期是在事件的开始还是结束。然后将您的 FRC 建立在 EventDate 实体上。尽管每个 EventDate 只会出现一次,但多个 EventDate 可能与单个事件相关。从 EventDate 到 Event 的反向关系将使您能够从多个 EventDates 访问单个 Event 的详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多