web-dev-qa-db-ja.com

グローバル変数を作成する方法

ViewController間で共有する必要があるグローバル変数があります。

Objective-Cでは、静的変数を定義できますが、Swiftでグローバル変数を定義する方法が見つかりません。

その方法を知っていますか?

101
czzhengkw

Swiftプログラミングから ガイド

グローバル変数は、関数、メソッド、クロージャ、または型コンテキストの外側で定義されている変数です。グローバル定数と変数は常に遅延計算されます

あなたはそれをどんなファイルでも定義することができて、どこでも現在のmoduleでそれにアクセスすることができます。それで、あなたはそれをどんな範囲の外側でもファイルのどこかで定義することができます。 staticは不要で、すべてのグローバル変数は遅延計算されます。

 var yourVariable = "someString"

現在のモジュールのどこからでもアクセスできます。

ただし、グローバル変数はアプリケーションの状態や主にバグの原因には適していないため、これを避ける必要があります。

これに示すように answer 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"
173
codester

メソッドやクロージャの外部で定義されているグローバル変数は、privateキーワードを使用してスコープを制限できます。

import UIKit

// MARK: Local Constants

private let changeSegueId = "MasterToChange"
private let bookSegueId   = "MasterToBook"
15
Dan Coughlin

あなたがあなたのクラスのすべてでそれを使いたいならば、あなたは使うことができます:

public var yourVariable = "something"

1つのクラスでだけ使用したい場合は、次のものを使用できます。

var yourVariable = "something"
2
user9050369