У мене є глобальна змінна, яку потрібно поділити між моїми 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 :)
Глобальні змінні, визначені за межами будь-якого методу чи закриття, можуть бути обмежені за допомогою приватного ключового слова.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
якщо ви хочете використовувати його у всіх своїх класах, ви можете використовувати:
public var yourVariable = "something"
якщо ви хочете використовувати лише в одному класі, ви можете використовувати:
var yourVariable = "something"