【问题标题】:MVC in Swift 4 - Model's interactions with ControllerSwift 4 中的 MVC - 模型与控制器的交互
【发布时间】:2018-03-27 20:26:36
【问题描述】:

我正在使用 Swift 4 开发一个移动应用程序,它需要使用蓝牙 LE 连接与外部设备进行交互。

目前我正在使用模型-视图-控制器模式来实现应用程序的结构,但我需要澄清一下。

当我从蓝牙适配器接收数据时,我将其存储在模型中。模型使用通知中心与控制器“发布”更改。 另一方面,控制器(模型的所有者)将修改写回模型,只需设置它的属性。

问题是,有时,我没有准备好控制器(实例化),所以我可以松动模型的更新(在那一刻我还没有准备好“观察”模型的更新)。

我发现解决此问题的唯一方法是:

  1. 在控制器viewDidLoad 中使用模型属性的“getter”读取模型的状态。
  2. 注册控制器以观察未来的模型更新。

现在工作正常,但我想了解的是,这是否是模型和控制器之间通信的正确行为。

【问题讨论】:

    标签: ios swift model-view-controller


    【解决方案1】:

    您可以在视图控制器中为该模型创建一个变量。 对于变量,实现 didSet 并执行您想要在视图控制器中执行的操作。您无需使用通知中心发布更改。 在 viewDidLoad 中,您可以第一时间从蓝牙适配器获取数据。 之后,每当您从蓝牙适配器收到更新的数据时,只更新模型。它会为你做剩下的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多