【问题标题】:How to organize data shared between view controllers in swift如何快速组织视图控制器之间共享的数据
【发布时间】:2016-08-24 01:37:55
【问题描述】:

我是 swift 和应用程序开发的新手,并且有一个关于如何最好地组织简单应用程序的数据的问题。

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

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

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

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

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

这个一般组织是否有效,是否符合最佳做法?有没有其他方法可以更好地解决这个问题?您的任何建议将不胜感激。谢谢!

【问题讨论】:

    标签: swift model-view-controller uiviewcontroller datahandler


    【解决方案1】:

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

    您需要有一个模型层,它可以控制对模型(数据)对象的访问。例如,您可以将模型类称为 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
    

    【讨论】:

    • 当然,这样做有一些优势,但是在 AppDelegate 中拥有一个全局对象几乎可以做同样的事情。我从来没有真正理解当有 AppDelegate 可用时,为什么要创建另一个类只是为了保存一个数据实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    相关资源
    最近更新 更多