Swift 4 中的 MVC - 模型与控制器的交互



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

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

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

问题是,有时,我没有准备好控制器(实例化(,因此我可以丢失模型的更新(在那一刻我还没有准备好"观察"模型中的更新(。

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

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

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

您可以在视图控制器中为该模型创建一个变量。对于变量,实现DIDSET并执行要在视图控制器中执行的操作。您无需使用通知中心发布更改。在ViewDidload中,您可以从蓝牙适配器第一次获得数据。之后,每当您从蓝牙适配器中收到更新的数据时,只需更新模型。它将为您完成其余的事情。

最新更新