2016-01-23 43 views
1

可以說,我想這樣做:在Swift中將類存儲爲字典的語法是什麼?

class foobar : NSObject { 
//method declarations, etc. 
} 

再後來:

let myDictionary:Dictionary = ["returnMeAnAwesomeClass":foobar] 

不工作。如果我把foobar.Type,它也不起作用。

如果我把foobar.class作爲foobar.Type,它也不起作用。

我想這是因爲有一個系統API的方法,需要一個類作爲參數,例如,其原因是:

func enterState(_ stateClass: AnyClass) -> Bool 

(在GKStateMachine)

我覺得可以接受的能夠獲得一個字符串並將其轉化爲一個類。

+0

然後嘗試'NSClassFromString' – mattsven

回答

2

如果您需要獲取類的類型,則可以使用foobar.self。而且還應該添加一個類型安全的字典:

let myDictionary: [String:AnyClass] = ["returnMeAnAwesomeClass": foobar.self] 

如果你初始化字典,你在哪裏,宣佈它的同一個地方,你可以跳過類型聲明,因爲編譯器會推斷出它:

let myDictionary = ["returnMeAnAwesomeClass": foobar.self] 
+0

不起作用。那是我嘗試的第一件事......當我回到電腦時會發布錯誤信息。也許是因爲我在遊樂場? – CommaToast

+0

原來你是對的。問題是我試圖使用Array作爲關鍵類型。不起作用。但是當我使用NSArray作爲鍵類型時,它可以工作。所以:'let myDictionary:[NSArray:AnyClass] = [「route」,「to」,「class」:customGKState.self]'等等等等。如果您所指的類(如foobar.self)在代碼中位於ABOVE以上,它也會有所幫助。 – CommaToast

相關問題