我想知道是否有一种(简单)方法可以使用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]
答案 0 :(得分:0)
一种解决方案是:
visited_building_id
(根据需要升序或降序)排序,然后按visit_time
(降序)排序。visited_building_id
作为获取结果控制器的sectionNameKeyPath
。因此,FRC将为每个建筑物设置一个区域,每个区域中的第一个对象将是最近的一次访问。您希望表视图行显示FRC的每个部分中的第一个项目。所以... 修改tablewView数据源方法,将FRC部分重新映射到tableView的行。例如,numberOfRowsInSection
将返回frc.sections.count
。 cellForRowAtIndexPath
将使用
NSIndexPath
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:0 inSection:(indexPath.row)]
或
let newIndexPath = NSIndexPath(forRow:0, inSection:indexPath.row)
并使用此newIndexPath
获取要使用frc的objectAtIndexPath
方法在单元格中显示的对象。
请注意,必须在其他数据源方法中重复/反转此重新映射。这也意味着你的tableView只能有一个部分。