【发布时间】:2017-02-02 11:16:12
【问题描述】:
我从一个日志文件中获得一个包含类名称的字符串,例如“孩子”可以定义为:
class Child: Object, MyProtocol {
// ...
}
我想在下面的泛型类中使用这个类:
open class MyClass<T: Object> where T:MyProtocol {
//…
open class func doSomething() {
//…
}
}
我已经问了一个问题here如何从字符串中获取类类型,可以通过以下方式获取:
let objectType = NSClassFromString("MyModule.\(strFromLog)”) as! Object.Type
显然,objectType 不能直接在 MyClass 上使用,因为它的类型是 T.Type 而不是 T,以下不起作用:
MyClass<objectType>.doSomething() // -> error: Use of undeclared type 'objectType'
但是,还有没有办法在MyClass 中使用objectType 而无需更改泛型类本身(即其他方法依赖它)?
【问题讨论】:
标签: ios swift generics metaprogramming