swift - 如何快速组织 View Controller 之间共享的数据

标签 swift model-view-controller uiviewcontroller datahandler

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

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

该应用程序有多个 View Controller 。其中两个访问/修改一系列选项。其他人访问并修改该数组中的单个选择。因此,它们都在不同程度上基于这一数据集。

现在,这些 View Controller 之一( TableView )几乎“拥有”并保存数据。其余的 View Controller 只是来回传递数据,这有点疯狂。

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

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

这个总体组织是否有效,是否符合最佳实践?还有其他方法可以更好地解决这个问题吗?如果您有任何建议,我们将不胜感激。谢谢!

最佳答案

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

您将需要一个模型层来实现对模型(数据)对象的受控访问。例如,您可以考虑一个模型类(例如 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 - 如何快速组织 View Controller 之间共享的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36929072/

相关文章:

ios - 如何使大写字母的 UILabel NSUnderlineStyle.StyleSingle attributedString 居中

ios - 比较日期与 currentDate Swift 时的奇怪 react

ruby-on-rails - 如何将私有(private)提交与事件提要一起使用?

ajax - 在 mvc 中,将表单(什么 Controller )的 ajax 脚本放在哪里?

ios - 发送数据时出错

ios - 分块解析 XML 文件,无需等待 Swift 中的完整下载

另一个文件中的 iOS UITextView 委托(delegate)

java - 当 Servlet、JSP 和轻量级 DAO 层可以工作时,为什么要使用 MVC 框架?

iphone - 在 iOS 中重新加载支持的界面方向

objective-c - numberOfSectionsInTableView 之后 UITableViewController 崩溃