【问题标题】:Updating objects/model across multiple controllers跨多个控制器更新对象/模型
【发布时间】:2018-06-09 19:32:53
【问题描述】:

我是 swift 的初学者。所以在我的项目中,我使用了多个对象/模型,几乎在所有控制器中都使用过。我的问题是,当我的对象/模型在任何一个控制器中更新时,如何自动更新我的对象/模型(跨所有控制器)?

执行此操作的正确方法是什么?我该怎么做??

【问题讨论】:

  • 你应该在控制器中为你的对象添加观察者,并实现方法更新你的 viewController UI
  • 如果在任何地方都使用相同的模型,为什么不使用该模型的单个对象。这样,无论您在哪里修改它,都可以在所有控制器中获得更改。仅当您确定要求时才这样做,因为这可能会导致无法追踪的错误..
  • 你能更新一些代码吗?比如你如何创建模型,使用你的模型对象和更新模型?

标签: ios swift swift3 swift2 updating


【解决方案1】:

有Pass By Value & Pass By Reference的概念。

最适合您的问题的解决方案是使用Pass By Reference 类型。

如果我们谈论Swift programming language。

class 是引用类型,struct 是值类型。

因此,您的模型类应该使用class 类型构建。

代码示例。

class Dog {
    var breed : String = ""
    var sub_breed = [String]()
    init(_breed:String,_sub_breed:[String]) {
        self.breed = _breed
        self.sub_breed = _sub_breed
    }
}

FirstViewController:

var dogs : [Dog] = [Dog(_breed: “Original”, _sub_breed: [“subBreedType1”, “subBreedType2”])]

SecondViewController: // You are passing reference of dogs to SecondVC

var dogs : [Dog] = []

dogs[0].breed = “Modified”

现在您已将breed name 的值从SecondViewController 更改,如果您返回FirstViewController 并检查数组的first element,则该值将是“Modified”

你可以试试这个想法。

其他解决方案:您的Model class 中的Singleton object。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 2013-07-10
    • 2018-07-05
    • 2021-12-21
    • 2012-05-11
    • 1970-01-01
    相关资源
    最近更新 更多