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