2017-09-18 128 views
0

我試圖讓從T.Type參數的實際對象。這是我的功能。獲得普通T.Type對象斯威夫特

func inject<T: Injectable>(_ injectableClass: T.Type) -> T { 
    let injectable = injectableClass as! Injectable 
    //More code that returns what is needed but this is the error spot 
} 

我創建一個依賴注入框架,並希望使用它,如下所示

var mColorManager: ColorManager { 
    return mAppModule.inject(ColorManager.self) 
} 

這工作,直到我想要做什麼,我想在注入函數裏面做。

這是錯誤我得到

無法投型 'Project.ColorManager.Type'(0x610000244158)的值設爲 'Project.Injectable'

ColorManagerInjectable

我如何投或T.Type獲得實際的類對象?

+0

你的意思是你想要返回一個'T'類型的對象?順便說一句,你現在的代碼沒有更多的上下文是沒有意義 –

+0

是我離開了不需要的部分,但我可以補充一點,我是創建一個依賴注入框架,但問題的根源是,從'T.Type'或'Object.self',我想'Object'從只知道'Object.self'。 – superuserdo

+0

所以你基本上只是想知道它的類型初始化一個對象? –

回答

0

我通過添加init()到協議解決了這個。我當時可以說

let realInjectableClass = injectableClass.init()