如何在iOS应用程序上构建网络请求

时间:2018-01-31 16:38:55

标签: ios swift networking request

所以,我还是一个没有经验的开发人员,我需要一些我正在开发的应用程序的帮助。

该应用包含不同的标签视图。前两个依赖于存储在数据库中的数据。我自己用Firebase创建的第一个数据库,因为它是一个新闻部分,我需要自己定期更新。第二个选项卡视图需要从两个不同的数据库请求简单数据,这两个数据库都以JSON格式返回数据。然后,应用程序应将两个数据库的数据保存为两个不同数组中的自定义对象,这两个数组都将用于比较数据集并在表视图中显示某些数据。

我正在努力解决的问题是在不影响用户体验的情况下触发这些网络请求的位置。这样做的最佳做法是什么?目前,第一个网络请求位于关联的viewcontroller的viewWillLoad()方法中。但我对此并不满意,因为打开应用程序和显示这些新闻之间存在一点延迟。另外,下载数据然后将其本地保存在设备上并将其与在线数据进行比较或每次下载都更好吗?它不是很多数据而只是文本 - 没有任何图片,视频 - 而且小部分数据会定期更改,大部分数据每年只会更改两次)

感谢您帮助我,因为我在某种程度上没有找到关于如何构建这些请求的大量信息,我希望一些更有经验的程序员可以在这里帮助我。

1 个答案:

答案 0 :(得分:0)

您可以在AppDelegate中启动网络任务:

func applicationDidBecomeActive(_ application: UIApplication) {
}

请确保加油,以免经常这样做。

通常,您希望缓存/存储网络结果并显示缓存的值。如果用户在启动应用时位于网络可用性有限或无网络的区域,这一点尤为重要。

如果您正在使用CoreData,则更新数据会自动更新您的表格视图。如果没有,那么您可以在网络更新的完成块中的表视图上调用reload(),或者发布视图控制器正在侦听的通知,然后更新。

无论哪种方式,都要确保使用后台队列上的URLSession数据任务进行更新。