

OS-Xのアプリをswiftで作成したいのですがViewControllerからAppDelegateに値を渡す方法がわかりません。

AppDelegateのapplicationWillTerminage(aNotification:NSNotification)に値を受け取りたいです。

AppDelegate Classで var Flag: Int?
のような形で宣言してこのクラス変数を利用したいのですがViewController側でその値をセットさせる方法がわかりません。

以上、宜しくお願いします。


CC BY-SA 3.0
2015-07-22T22:09:24.680
12585
2015-07-23T00:19:01.637
9666
question
swift macos
OS-X:ViewControllerからAppDelegateに変数の値を渡したい。


iOSでは、`UIApplication.sharedApplication().delegate`で、`AppDelegate`のインスタンスを参照できますが、それはOS
Xも同様です。

[code]

    NSApplication.sharedApplication().delegate as? AppDelegate
    
[/code]

これで参照できます。

> AppDelegate Classで var Flag: Int? のような形で宣言してこのクラス変数を利用したいのですが

Swiftは、Objective-Cとおなじく、 **インスタンス変数** はあっても、 **クラス変数はない** と思いましたが……  
Swiftは、変数をできるだけOptional型にしないのが、ひとつのテクニックです。  
Swiftの命名規則に従って、変数は小文字から始めましょう。

[code]

    var flag: Int = 0
    
[/code]

初期値を与えておけば、非Optional型にすることができ、いちいち!や?をつけずに使うことができます。

**おまけ：**

`AppDelegate`は、Responder
Chainの経路に入っているので、`target`を`nil`にしたActionは、経路の途中にActionメソッドを記述していなければ、`AppDelegate`クラスに書いたActionメソッドで受け取ることができます。


CC BY-SA 3.0
2015-07-23T00:19:01.637
12589
2015-07-23T00:19:01.637
7362
12585
answer