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

Я пытаюсь установить глобальную переменную. В моем случае просто логический флаг, который указывает, представлено ли представление в первый раз:

var initialLoadFlag: Bool = true

после представления представления я хочу установить этот флаг в false:

var initialLoadFlag: Bool = false

и затем проверьте его отныне:

if initialLoadFlag {
   showWelcomeMessage() 
}

Итак, я хотел бы создать initialLoadFlag как глобальная переменная. Где и как? Я пробовал:

  • на viewDidLoad область моего зрения контроллер
  • на application() метод в моем AppDelegate.swift file
  • на AppDelegate класс

не повезло. Я получаю Use of unresolved identifier 'initialLoadFlag' сообщение об ошибке

(примечание: Я понимаю, что в этом вопросе я предаю свое невежество в том, как обрабатывается сфера в Swift. Пожалуйста, прости меня... У меня крайний срок, и я все еще новичок в языке.)

Спасибо за вашу помощь.

2 ответов


вы можете сохранить флаг в главном контроллере и установить его в true при выполнении перехода к контроллеру сведений. Е. Г.

class MasterViewController: UIViewController {

    var firstTimePresenting = true

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showDetail" {
            if firstTimePresenting {
                println("First time!")
                firstTimePresenting = false
            }
        }
    }
}

вы можете определить структуру со статическим файлом:

struct MyViewState {
    static var initialLoadFlag = false
}

использование:

// Set
MyViewState.initialLoadFlag = true

// Get
let state = MyViewState.initialLoadFlag
println("My view state:\(state)")

Примечания: Такие хаки, как singletons и global vars, обычно необходимы в случае плохого дизайна. Возможно, вы можете сохранить свое состояние в NSUserDefaults? Или сохраните его в каком-либо объекте сеанса, который можно ввести в любой ViewController, который должен знать о контексте.