ios - 类变量值未更新
问题描述
我有一个用 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,但这也效果不佳。
解决方案
方法 1 - 全局变量(不推荐)
将它们声明为任何类之外的全局变量。
var vars: GlobalVars = GlobalVars()
方法 2 - 共享实例
在类中将它们声明为静态变量:
class GlobalVars {
static var shared: GlobalVars = GlobalVars()
// Your variables and other stuff
}
您可以使用类名后跟.
运算符来访问变量。
GlobalVars.shared.variable = // Store something
推荐阅读
- google-cloud-datastore - 谷歌数据存储交易异常
- python - Pandas 根据字符串列值有条件地设置值
- java - sharedPrefrences 上下文空指针,跨活动
- javascript - 将值发送到另一个文件 JS
- c# - 如何使用 NAudio 从 WASAPI 设备获取样本中的实际缓冲区大小?
- git - 从 Linux VM 连接到 Windows 机器上的 GIT 存储库
- java - Cucumber Java (Maven) WebdriverManager (Bonigarcia) 无法从属性中获取 URL
- reactjs - TypeError: 'function' 不是 React Native 中的函数
- sql - 如何在表中创建新列并向其添加值
- python - Pandas - 堆叠多列