2017-07-24 82 views
-6

我試圖從Swift中的字符串中獲取類。這不是工作。我嘗試以下操作:無法從字符串創建類Swift

打印(NSClassFromString(詞典[關鍵]) - 「錯誤」!)

它產生 「錯誤」。然而,在日誌中,我可以看到

po dictionary[key]! 
"VacanciesCell" 

爲什麼會這樣呢?

空缺細胞定義爲:

import UIKit 

class VacanciesCell: BaseCell, ModelBinding { 

... 

} 
+1

你爲什麼想這樣做? - 你看過https://stackoverflow.com/questions/24030814/swift-language-nsclassfromstring中的各種答案嗎? –

+0

@MartinR因爲我想獲得單元類來註冊它。 –

+0

@Hamish我編輯了我的文章,有沒有其他需要的信息? –

回答

1

問題通過以下解決:

for (key, _) in dictionary { 
    print(NSClassFromString(dictionary[key]!) ?? "error") 
    print("key - \(key) val \(dictionary[key]!)") 
    let cellClassStr = "AppName.\(dictionary[key]!)" 

    self.register(NSClassFromString(cellClassStr), forCellReuseIdentifier: key) 
} 

其中 「AppName的」 是應用程序的名稱。

+3

我想你的意思是「模塊名稱」,而不是「應用程序名稱」。 – Sulthan

+2

這聽起來像是一種可怕的方式來註冊你的課程。無論如何,你如何將類名存儲到字典中?你爲什麼不直接存儲類並調用接收類的'register ...'方法? – EmilioPelaez

+0

@Sulthan我不知道區別,我添加應用程序名稱作爲字符串。 –