【发布时间】:2015-07-07 09:39:17
【问题描述】:
有没有办法在运行时定义类型别名?
在我的测试代码中:
typealias classType = A
switch i {
case 0: typealias classType = B
case 1: typealias classType = C
case 2: typealias classType = D
default:typealias classType = E
}
但是classType仍然是A“类型”..
最先进的:
class E {}
class A: E {}
class B: E {}
class C: E {}
class D: E {}
class Service {
func retrieve<T>(completion: (response: ResponseItems<T>?, error: NSError?) -> Void) {}
}
所以,在代码的通用部分:
let service = Service()
typealias classType = A
switch i {
case 0: typealias classType = B
case 1: typealias classType = C
case 2: typealias classType = D
default:typealias classType = E
}
service.retrieve{ (response: ResponseItems<classType>?, error) -> Void in
}
这可行,但总是用 A 类型调用。
【问题讨论】:
-
你需要用
classType做什么? -
这样,不……你到底想做什么?
-
看看更新..
-
抱歉,我仍然不确定你要做什么!
-
我更新了整个代码,也许更清楚..
标签: ios objective-c swift generics type-alias