- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我仍然是一个没有经验的开发人员,我需要一些关于我当前正在开发的应用程序的帮助。
该应用程序由不同的选项卡 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/
我是一名优秀的程序员,十分优秀!