在显示数据之前处理异步下载延迟



我的应用异步连接到解析服务器,并将必要的数据下载到应用的核心数据存储中。然后,我想在表格视图中显示此数据。但在大多数情况下,由于连接是异步的,表视图访问数据存储的速度比下载的要快得多。在这种情况下,我得到一个空的表视图单元格,紧接着数据存储中的数据准备就绪。

处理异步下载导致的延迟的最佳方法是什么?我缺少一个概念吗?是NSFetchedResultsController吗?

您认为处理以下原因造成的延误的最佳方法是什么 异步下载?

这取决于您的要求。特别是,如果用户可以在异步下载期间与 UI 交互,则不能对其执行任何操作,否则只需使用微调器来提醒他正在下载某些内容并停止交互,直到同步完成。

无论如何,在这两种情况下,您都应该对下载说些什么。特别是,您是否将数据保存在不同的线程(与主线程不同)中?如果是这样,您应该将更改从您在后台使用的上下文合并到与NSFetchedResultsController关联的上下文(始终是主要上下文,因为NSFetchedResultsController管理 UI 元素)。

有没有一个"概念"是我想念的,是NSFetchedResultsController吗?

是否正确设置了委托NSFetchedResultsControllerDelegate?如果是这样,NSFetchedResultsController会跟踪您在抓取请求中注册的实体的更改。其他实体不会发生任何更改。

异步是一个您需要处理的设计问题。 看看你所在领域的其他一些流行的应用程序,看看它们是如何解决的。 它们是否显示微调器(我个人讨厌),或者它们是否显示一些不显眼的指示,表明数据正在下载(更好)?

如果您使用NSFetchedResultsController(我通过您的问题猜测您目前不是),一旦数据保存在核心数据中,您将在数据后显示数据,而无需您付出额外的努力。 因此,您至少可以尽快显示数据。

同时,我建议让单元格/表格为空,让用户知道您的应用程序正在运行。 尽快显示数据。 也许考虑将数据分段下载,以便他们可以尽快开始查看。

最新更新