ios - iOS 中何时刷新数据

标签 ios

我不确定这个问题是否严格限于 iOS,因为它更多的是关于数据完整性的一般应用程序设计问题。但目前,我正在进入 iOS,并且遇到了“最佳实践”的障碍。

如果我们以 Twitter 应用程序为例。我们有一个用于时间线的选项卡和一个用于个人资料的选项卡。因此(为了让事情变得非常简单)每个 Controller 都是一个 View Controller ,由一个对象(模型)支持。我在时间线 VC 上发推文,然后转到我的个人资料选项卡。两个 viewDidLoad 方法都已运行,因此加载用于绘制 UI 的数据当前已过时。我的推文“计数”现已过时。在iOS世界中,保持VC模型数据与后端同步的最佳方法是什么?

有时间间隔吗?或者viewWillAppear方法中的网络请求?它是事件驱动的吗?当我在一个 VC 中发推文并且它已保存在后端 Web 服务中时,我会通知所有关心的 VC 有一条新推文

我不是 100% 确定这个问题会有一个“答案”,但我只是想了解 iOS 世界中已经完成的事情(作为来自网络开发世界的人) .

最佳答案

以下是我们团队在网络应用程序上所做的一些事情的粗略草图,可能会让您深入了解自己的架构。

在 VC 级别(在 viewWillAppear 中),我们通常有多个 NSNotificationCenter 观察者,它们将在网络更新调用后调用您需要运行的任何更新方法。

发出这些通知的是一些位于后台线程上的网络监听器。它的工作是等待来自后端服务器(通常是 JSON blob)的响应,其中包含数据模型的更新。我相信我们有一个时间间隔,会定期打电话回家检查是否有新的东西要更新。

请注意,您必须为网络调用设计一个异步解决方案,因为数据包的传递/接收可能不可靠,并且需要时间,因此应该在后台计算。您还需要一种方法来处理服务器和设备之间的数据丢失和其他错误。当然,为了查看 UI 更新,您需要在更新 VC 时切换回主线程。

假设状态发生一些变化(即新消息),然后它会调用以获取新数据,然后触发 NSNotification(带有新的信息负载),该通知将发送给 VC 上的观察者。

关于ios - iOS 中何时刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24762402/

相关文章:

iOS:如何从我的应用程序中打开 Facebook 应用程序中的特定帖子?

javascript - 如何将值从 javascript 传递到 iOS UIWebView

使用生成的访问器删除对象时,iOS Core Data to-many 关系中断

ios - iOS 中从 bundle 复制到缓存文件夹的文件具有编译的 CreationDate 和 ModifiedDate

ios - 检测目标 View Controller 中的导航弹出

iphone - iPhone处理器上哪种音质更容易?

ios - 将 Gmail API 与 Xcode 7 和 Swift 一起使用

ios - 如何判断我的意图是否在快捷方式应用程序中运行?

ios - 在 iOS 上将 SVG 转换为任意大小的图像

ios - Xcode 8.2.1 - 错误 : Invalid bitcode version (Producer: '802.0.41.0_0' Reader: '800.0.42.1_0' )