CoreData组中的最新条目

时间:2015-09-25 22:11:03

标签: ios core-data

我想知道是否有一种(简单)方法可以使用NSFetchedResultsController实现以下功能:

说我有一个这样的访客日志表:

visitor_name (String)
visit_time (Date)
visited_building_id (String)

示例数据:

John, 2015-09-25 10:00:00, ABC
Jane, 2015-09-25 10:20:00, ABC
Mark, 2015-09-25 10:40:00, ABC
Jane, 2015-09-25 10:10:00, DEF

我想显示一个表格视图,显示最近访问过每个建筑物的人,因此对于上面的数据,它应该显示两行:

[ABC, Mark, 9/25 10:40]
[DEF, Jane, 9/25 10:10]

1 个答案:

答案 0 :(得分:0)

一种解决方案是:

  1. visited_building_id(根据需要升序或降序)排序,然后按visit_time(降序)排序。
  2. 指定visited_building_id作为获取结果控制器的sectionNameKeyPath。因此,FRC将为每个建筑物设置一个区域,每个区域中的第一个对象将是最近的一次访问。您希望表视图行显示FRC的每个部分中的第一个项目。所以...
  3. 修改tablewView数据源方法,将FRC部分重新映射到tableView的行。例如,numberOfRowsInSection将返回frc.sections.countcellForRowAtIndexPath将使用

    构建新的NSIndexPath

    NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:0 inSection:(indexPath.row)]

    let newIndexPath = NSIndexPath(forRow:0, inSection:indexPath.row)

    并使用此newIndexPath获取要使用frc的objectAtIndexPath方法在单元格中显示的对象。

  4. 请注意,必须在其他数据源方法中重复/反转此重新映射。这也意味着你的tableView只能有一个部分。