ios - 如何在 iOS 应用程序上构造网络请求

标签 ios swift networking request

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

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

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

感谢您在这里帮助我,因为我不知何故没有找到很多有关如何构造这些请求的信息,我希望一些更有经验的程序员能够在这里帮助我。

最佳答案

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

func applicationDidBecomeActive(_ application: UIApplication) {
}

只要确保你限制它,这样你就不会经常这样做。

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

如果您使用 CoreData,则更新数据将自动更新您的表格 View 。如果没有,那么您可以在网络更新的完成 block 中对 TableView 调用 reload() ,或者发布 View Controller 正在监听的通知,然后进行更新。

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

关于ios - 如何在 iOS 应用程序上构造网络请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547107/

相关文章:

ios - 用于类消息的 Objective-C 宏

ios - 请帮我找出这个 Objective-C 方法 (iOS) 中的内存泄漏

ios - 加载新的 ViewController 导致 EXC_BAD_ACCESS

ios - 如何在 iOS 中使用 Objective-C 进行 POST 调用和发送参数

ios - 如何检查网络是否断开显示警报并停止该方法

java - 有没有办法确定是否已在 TCP Java Socket 中接收到数据

iOS Xcode 4 UINavigationController

Swift 4 Decodable - 以枚举为键的字典

ios - 自定义 segue,扩展源 View Controller

ios - Swift 中的可选项,为什么这个简单的代码不打印可选项?