如何在 swift 中组织视图控制器之间共享的数据

How to organize data shared between view controllers in swift

我是 swift 和应用程序开发的新手,对如何最好地组织简单应用程序的数据有疑问。

我有一个为对象 Choice 定义的数据模型。

该应用有多个视图控制器。其中两个 access/modify 一组选择。其他人访问和修改此数组中的单个选择。所以,他们都在不同程度上从这个数据集开始工作。

现在,这些视图控制器之一(table 视图)几乎 "owns" 并保存数据。其余的视图控制器只是来回传递数据,这有点疯狂。

我想做的是拥有一个他们都可以访问的数据源。但是我不想在 AppDelegate 中使用全局变量。

我目前的想法是,我将为所有这些视图控制器创建一个父级 class 以供继承。此 class 将拥有数据和所有数据处理功能。

这种通用组织是否有效,是否符合最佳实践?有没有另一种方法可以更好地解决这个问题?如果您有任何建议,我们将不胜感激。谢谢!

你在有基本视图控制器的地方提到的方法在这里不合适,而且从它派生会产生复制数据等问题,如果你想从其他地方访问数据,也可能会导致问题非视图控制器。

您将需要一个模型层,以启用对模型(数据)对象的受控访问。例如,您可以考虑模型 class 说 ChoiceManager 并将其设为单例。

class ChoiceManager{

  //The singleton instance
  static let sharedInstance = ChoiceManager()

  var choices : [Choices] = []

  //Logic to create Choice objects - may be parsing from a JSON, or from a network etc



}

现在在整个项目中,您只需说

就可以访问同一个 ChoiceManager
ChoiceManager.sharedInstance

以及访问选项:

ChoiceManager.sharedInstance.choices