从Swift中的泛型T.Type获取对象

时间:2017-09-18 23:50:32

标签: ios swift

我正在尝试从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)
}

这一直有效,直到我想在注入函数中做我想做的事情。

这是我得到的错误

  

无法转换类型&#39; Project.ColorManager.Type&#39;的值(0x610000244158)到&#39; Project.Injectable&#39;

ColorManagerInjectable

如何从T.Type转换或获取实际的类对象?

1 个答案:

答案 0 :(得分:0)

我通过在协议中添加init()来解决这个问题。我当时可以说

let realInjectableClass = injectableClass.init()