2017-02-16 4 views
0

私はアプリケーション全体で使用できるグローバル変数を作成しようとしています。私は、AppDelegateクラスに物を入れることができるとわかりました。より良い方法を知っていれば、どこにでもアクセスできます。Swift AppDelegate Struct usage

私は構造体を作成しようとすると、私は問題を実行しています。マイコード:

struct category { 
    let one: UInt32 = 0x1 << 1 
    let two: UInt32 = 0x1 << 2 
    let three: UInt32 = 0x1 << 3 
    let four: UInt32 = 0x1 << 4 
} 

と私は任意のクラスでそれにアクセスしようとすると、私はエラーに

Instance member 'one' cannot be used on type 'category' 

を取得し、私も使ってみました:

struct category { 
    let one: UInt32 { 
     get { 
      return 0x1 << 1 
     } 
    } 
} 

とそれはどちらか動作しませんでした。

答えて

2

まず、App Delegateについて特別なことは何もありません。グローバル変数は、それが独自のスコープ内にある限り(どこにも含まれていない)どこでも作成できます。

第2に、あなたが作成するletがインスタンス変数であるため、取得したエラーはカテゴリのインスタンスが必要であることを意味します。だからあなたは言うことができる

let myCategory = category() 
let one = myCategory.one 

しかし、これはおそらくあなたが望むものではありませんグローバル定数です。

struct category { 
    static let one: UInt32 = 0x1 << 1 
    static let two: UInt32 = 0x1 << 2 
    static let three: UInt32 = 0x1 << 3 
    static let four: UInt32 = 0x1 << 4 
} 

let one = category.one 

第三に、あなたは構造体名(Category)を活用し、このすべてが説明されてSwift language guide上に読んでください:あなたがオブジェクトのインスタンスを作成する必要がしたくない場合はletstaticを作ります。

+0

ありがとうございます! –