iOS - 核心数据 - UITableView - 更新计算值 - NSFetchedResultsControlle



概述

  • 我有一个使用核心数据(NSFetchedResultsController)和表格视图的iOS项目。我有一个名为"joingDate"的字段。

  • 我在表视图单元格上有一组标签来表示数据。

  • 如果加入日期是今天/明天,那么我想显示为"今天"或"明天",而不是指定实际日期。

  • 只是在想,我会检查 lastCheckedDate(上次检查日期的时间),如果超过一天,那么我将不得不更新具有加入日期和"今天"或"明天"的行中的所有标签。

  • 在数据库中,"JoiningDate"将存储为日期,只有标签需要以特定格式显示"今天"/"明天"/日期。

我已经实现了以下方法,其中标签"joingDateComments"根据其当前日期进行更新。

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath

问题

注意 - 我正在使用NSFetchedResultsController

  1. 更新所有具有今天/明天joiningDate的行标签的最佳方法是什么?
  2. 我应该重新加载表中的所有记录吗?(但这只会影响几行。
  3. 我应该遍历所有索引并检查和更新。我不确定这是否有效,因为我正在使用NSFetchedResultsController.
  4. 我是否应该使用瞬态数据,以便我可以查询数据库并获取具有"JoingDate"的记录,如今天/明天并更新瞬态字段JoingDateComments,以便这些记录将由NSFetchedResultsController 自动刷新

答:

请浏览安德鲁的评论。

user1046037,

这真的不是一个核心数据问题,而是一个UITableView问题。大多数内容都以-tableView:cellForRowAtIndexPath:方法处理。在那里,您将选择如何表示单元格。另一个地方是当NSFetchedResultsController用更改的对象调用您时。(标准核心数据表视图控制器为您编写此样板。换句话说,您不必遍历所有对象。如果要更精细地控制这些单元格的更新时间,可以侦听"已保存"通知。然后在表视图中查询可见单元格数组。然后,可以使用单元格索引路径来更新单元格内容。

安德鲁

最新更新