跨多个控制器更新对象/模型
Posted
技术标签:
【中文标题】跨多个控制器更新对象/模型【英文标题】:Updating objects/model across multiple controllers 【发布时间】:2018-06-09 19:32:53 【问题描述】:我是 swift 的初学者。所以在我的项目中,我使用了多个对象/模型,几乎在所有控制器中都使用过。我的问题是,当我的对象/模型在任何一个控制器中更新时,如何自动更新我的对象/模型(跨所有控制器)?
执行此操作的正确方法是什么?我该怎么做??
【问题讨论】:
你应该在控制器中为你的对象添加观察者,并实现方法更新你的 viewController UI 如果在任何地方都使用相同的模型,为什么不使用该模型的单个对象。这样,无论您在哪里修改它,都可以在所有控制器中获得更改。仅当您确定要求时才这样做,因为这可能会导致无法追踪的错误.. 你能更新一些代码吗?比如你如何创建模型,使用你的模型对象和更新模型? 【参考方案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
。
谢谢。
【讨论】:
以上是关于跨多个控制器更新对象/模型的主要内容,如果未能解决你的问题,请参考以下文章