如何在 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
我是 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
}
现在在整个项目中,您只需说
就可以访问同一个 ChoiceManagerChoiceManager.sharedInstance
以及访问选项:
ChoiceManager.sharedInstance.choices