首页 > 解决方案 > 类变量值未更新

问题描述

我有一个用 Swift 编写的 iOS 应用程序。
在这个应用程序中,我有多个变量,我需要它们在每个 ViewController 中都可以访问。问题是我不能通过它们,prepare(for segue:, sender:)因为我说的是 20 个变量。

我尝试将它们放在一个名为 的类中GlobalVars,以便在初始 ViewController 上将数据库中的数据加载到变量中。在这个 ViewController 中,这就是我声明类变量的方式:

var vars: GlobalVars = GlobalVars()

然后,在viewDidLoad()函数中,我将数据加载到类的变量中。

在其他 ViewControllers 中,我在开头声明了以下变量:

var vars: GlobalVars = LoadingViewController().vars

问题已经在 LoadingViewController 中开始了。问题是显然数据没有保存到类的变量中。

在这个类中,我有每个变量的初始值,但是是空的。例如,数组被声明为[].

如何使每个 ViewController 都可以访问变量?我也尝试使用 struct 而不是 class,但这也效果不佳。

标签: iosswiftclassstruct

解决方案


方法 1 - 全局变量(不推荐)

将它们声明为任何类之外的全局变量。

var vars: GlobalVars = GlobalVars()

方法 2 - 共享实例

在类中将它们声明为静态变量:

class GlobalVars {
    static var shared: GlobalVars = GlobalVars() 

    // Your variables and other stuff
}

您可以使用类名后跟.运算符来访问变量。

GlobalVars.shared.variable = // Store something

推荐阅读