如果序列之间存在时间间隔,我遇到了如何在单个图表上显示核心数据实体序列的问题。
我得到了一个固定长度的条形图(由 UITableView 支持),每个条形由一个核心数据实体表示,所有实体都带有时间戳并相互跟随,因此对此类数据进行排序会产生如下图。这种图表的好处是NSFetchedResultsController
可以用来动态更新表格视图以响应添加的新事件。结果是在用户看来,随着时间的推移,新的条形图会添加到左侧。
我的问题是我想扩展这个图表,让它 24 小时长并且可以左右滚动。在这种情况下,将出现应用程序中不存在任何数据的情节。最终结果是,如果我在数据存在间隙时依赖 NSFetchedResultsController,并且我想为丢失的数据显示空白单元格。
我对你将如何解决这个问题感兴趣。
我看到了两个潜在的解决方案:
1) 放弃使用 的方法NSFetchedResultsController
,而是手动计算 a 中的条数UITableView
。每个条形图由开始日期和结束日期定义。然后我可以使用NSFetchRequest
with predicate 来查询每个 bar 的数据。如果有一个事件的时间戳在条形的日期范围内,则显示一个条形,否则显示一个空白。
方法 #1 的问题在于它很慢,虽然它确实允许滚动整个数据集,但它很慢而且滞后,因为每个获取请求都是针对每个新柱执行的。此外,我需要手动刷新表以响应添加的新数据,这很难正确实现。
2)也许我可以用空白事件预先填充数据集,然后在数据可用时“填充”它们。这将允许我使用获取的结果控制器保留表格视图,从而实现更平滑的滚动,但代价是显着增加了应用程序使用的持久存储(因为将在应用程序使用之间创建空白实体)。
如果有我没有想到的其他方法,我会徘徊。您将如何创建一个可在应用程序的持久数据存储中允许“间隙”的侧滚动条形图?
谢谢您的意见!