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

时间:2016-04-29 03:31:33

标签: swift model-view-controller uiviewcontroller datahandler

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

我有一个为对象定义的数据模型,选择。

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

现在,其中一个视图控制器(表视图)几乎“拥有”并保存数据。其余的视图控制器只是来回传递数据,这有点疯狂。

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

我目前的想法是,我将为所有这些视图控制器创建一个父类来继承。该类将拥有数据和所有数据处理函数。

这个一般组织是否有效,是否与最佳做法一致?还有另一种方法可以更好地解决这个问题吗?您的任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您提到的有基本视图控制器的方法在这里不合适,并且从中导出也会产生诸如复制数据之类的问题,如果您想从非视图控制器访问其他地方,也可能会导致问题。

您需要拥有一个模型层,以便能够对模型(数据)对象进行受控访问。例如,您可以将模型类视为ChoiceManager并将其设为Singleton。

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