У меня есть глобальная переменная, которую нужно разделить между моими ViewControllers.
В Objective-C я могу определить статическую переменную, но я не могу найти способ определить глобальную переменную в Swift.
Знаете ли вы, как это сделать?
У меня есть глобальная переменная, которую нужно разделить между моими ViewControllers.
В Objective-C я могу определить статическую переменную, но я не могу найти способ определить глобальную переменную в Swift.
Знаете ли вы, как это сделать?
Из официального руководства по программированию 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"
Глобальные переменные, которые определены вне любого метода или закрытия, могут быть ограничены областью, используя ключевое слово private.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
если вы хотите использовать его во всех ваших классах, вы можете использовать:
public var yourVariable = "something"
если вы хотите использовать только в одном классе, вы можете использовать:
var yourVariable = "something"