如何创建全局变量



我有一个全局变量,需要在ViewControllers之间共享。

在Objective-C中,我可以定义一个静态变量,但在Swift中找不到定义全局变量的方法。

你知道怎么做吗?

来自Swift官方编程指南:

全局变量是在任何函数、方法、闭包或类型上下文。全局常数和变量总是懒散地计算。

您可以在任何文件中定义它,也可以在当前module中的任何位置访问它。因此,您可以在文件中任何范围之外的某个位置定义它。不需要CCD_ 2,并且所有全局变量都是延迟计算的。

 var yourVariable = "someString"

您可以从当前模块中的任何位置访问它。

然而,您应该避免这种情况,因为全局变量对应用程序状态不好,这主要是错误的原因。

如这个答案所示,在Swift中,您可以将它们封装在struct中,并可以访问任何地方。您也可以在Swift中定义静态变量或常量。封装在struct

struct MyVariables {
    static var yourVariable = "someString"
}

您可以在任何类或任何中使用此变量

let string = MyVariables.yourVariable
println("Global variable:(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"

在任何方法或闭包之外定义的全局变量都可以通过使用private关键字进行范围限制。

import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId   = "MasterToBook"

如果你想在所有的类中使用它,你可以使用:

public var yourVariable = "something"

如果你只想在一个类中使用,你可以使用:

var yourVariable = "something"

如果您实际上并不想要全局变量,而是想要保存即使在应用程序关闭时仍然存在的值,则可以执行以下操作:

如果你实际上不想在视图控制器之间传递数据,而只是想存储一个全局变量,你可以这样做:

这为如何在Swift 5中做到这一点提供了一个很好的解释:https://www.hackingwithswift.com/example-code/system/how-to-save-user-settings-using-userdefaults

摘要:

设置值:

let defaults = UserDefaults.standard
defaults.set("value", forKey: "key")

获取字符串值:

let key = defaults.object(forKey: "StringKey") as? [String] ?? [String]()

获取整数值:

let key = defaults.integer(forKey: "IntegerKey")

相关内容

  • 没有找到相关文章

最新更新