繁体   English   中英

iPhone iOS在显示图表时如何处理Core Data中的时间间隔?

[英]iPhone iOS how to deal with time gaps in Core Data when presenting a graph?

如果序列之间存在时间间隔,我会遇到一个问题,即如何在单个图形上显示核心数据实体的序列。

我得到了一个固定长度的条形图(由UITableView支持),每个条形都由核心数据实体表示,所有实体都带有时间戳,并且彼此跟随,因此对此类数据进行排序会得到如下图所示的图形。 这种图的优点在于,可以使用NSFetchedResultsController来动态更新表视图,以响应添加的新事件。 结果是,随着时间的流逝,用户似乎会在左侧添加新的条形图。 睡眠周期图

我的问题是我想扩展此图并将其设为24小时长,并且可以左右滚动。 在这种情况下, 某些情节中应用程序中将不会有任何数据 最终结果是,如果在数据中存在空白时我依赖NSFetchedResultsController,并且我想显示空白单元格以查找丢失的数据。

我对您如何解决该问题感兴趣。

我看到两个潜在的解决方案:

1)放弃使用NSFetchedResultsController的方法,而是手动计算UITableView的柱数。 每个栏由开始日期和结束日期定义。 然后,我可以将NSFetchRequest与谓词一起使用来查询每个小节的数据。 如果有一个时间戳记在栏的日期范围内的事件,则显示一个栏,否则显示空白。

方法#1的问题是它很慢,虽然它确实允许滚动整个数据集,但它又慢又漫长,因为对每个新柱都执行了每个提取请求。 另外,我需要手动刷新表以响应添加的新数据,这很难正确实现。

2)也许我可以用空白事件预填充数据集,然后在数据可用时“填充”它们。 这将使我能够将表格视图与获取的结果控制器保持在一起,从而使滚动更加顺畅,但代价是显着增加了应用程序使用的持久性存储(因为在应用程序使用之间将创建空白实体)。

如果有我没有想到的其他方法,我正在徘徊。 您将如何创建侧面滚动条形图,以允许应用程序的持久数据存储中存在“间隙”?

谢谢您的意见!

您的问题确实与Core Data或NSFetchedResultsController没有任何关系。 图形视图如何绘制给出的数据完全取决于图形视图。 没有理由不能编写使用NSFetchedResultsController 适当处理数据间隙的图形视图,但是UITableView从未打算处理缺失/空单元格。

问题不在于您使用的是Core Data还是NSFetchedResultsController。 问题是您正在滥用UITableView。

绘制条形图非常简单-只是在适当位置绘制的一系列矩形。 您可以为视图提供一个获取的结果控制器,并让其查看fetchedObjects属性以获取当前的对象列表。 然后,它可以根据需要渲染任意数量的这些对象,并且可以使用每个对象的开始和结束日期在图形上定位图形。 将图形放在UIScrollView中,这样您就不必担心滚动。 如果图形可能变大,请添加平铺,以便您仅绘制用户正在查看的部分,就像UITableView一样。

看起来您当前也在表格视图上方绘制一些内容。 如果创建自己的图形视图,则可以考虑同时绘制其他内容(红线,红色和绿色气泡,高REM可能性)。 这样做可以轻松地确保所有内容都正确地位于图形上(这可能会给您当前的方案带来麻烦)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM