Как создать глобальную переменную?

У меня есть глобальная переменная, которую нужно разделить между моими ViewControllers.

В Objective-C я могу определить статическую переменную, но я не могу найти способ определить глобальную переменную в Swift.

Знаете ли вы, как это сделать?

Ответ 1

Из официального руководства по программированию Swift guide:

Глобальные переменные - это переменные, которые определены вне функция, метод, замыкание или тип контекста. Глобальные константы и переменные всегда вычисляются лениво.

Вы можете определить его в любом файле и получить доступ к нему в текущем module где угодно. Таким образом, вы можете определить его где-то в файле за пределами любой области видимости. В static нет необходимости, и все глобальные переменные вычисляются лениво.

 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"

Ответ 2

Глобальные переменные, которые определены вне любого метода или закрытия, могут быть ограничены областью, используя ключевое слово private.

import UIKit

// MARK: Local Constants

private let changeSegueId = "MasterToChange"
private let bookSegueId   = "MasterToBook"

Ответ 3

если вы хотите использовать его во всех ваших классах, вы можете использовать:

public var yourVariable = "something"

если вы хотите использовать только в одном классе, вы можете использовать:

var yourVariable = "something"