【发布时间】:2018-08-16 10:57:47
【问题描述】:
我有一个用 Swift 编写的 iOS 应用。
在这个应用程序中,我有多个变量,我需要它们在每个 ViewController 中都可以访问。问题是我不能在 prepare(for segue:, sender:) 中传递它们,因为我说的是 20 个变量。
我尝试将它们放在一个名为 GlobalVars 的类中,以便在初始 ViewController 上将数据从 DB 加载到变量中。在这个 ViewController 中,这就是我声明类变量的方式:
var vars: GlobalVars = GlobalVars()
然后,在viewDidLoad() 函数中,我将数据加载到类的变量中。
在其他 ViewControllers 中,我在开头声明了以下变量:
var vars: GlobalVars = LoadingViewController().vars
问题已经在 LoadingViewController 中开始了。问题是数据显然没有保存到类的变量中。
在这个类中,每个变量都有初始值,但为空。例如,数组声明为[]。
如何让每个 ViewController 都可以访问变量?我也试过用 struct 而不是 class,但效果也不太好。
【问题讨论】:
-
LoadingViewController().vars它不是你的视图控制器的同一个实例 -
只需将你的 20 个变量添加到单个对象中并传递它,这样会更好吗?
-
它被称为
GlobalVars的事实应该告诉你这是一个坏主意。 @Tj3n 是对的 - 创建一个结构并在视图控制器之间传递它。 -
不过,如果您希望更改反映在每个类中,最好使用单例或全局变量或 db,我认为 OP 已经在使用 db,但他如何使用它似乎是错误的,只需在每个类中再次获取数据