有没有办法在Swift中获得_stable_通用类名?

前端之家收集整理的这篇文章主要介绍了有没有办法在Swift中获得_stable_通用类名?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Swift中获得一个类的名称很容易:
import Foundation

class Gen<T> {
    init() { }
}

func printName(obj: AnyObject) {
    dump(NSStringFromClass(obj.dynamicType))
}

let a: Gen<String> = Gen()
let b: Gen<Int> = Gen()
printName(a)
printName(b)

但是,如果您运行上述代码两次,则不会产生相同的结果.

那么有没有办法以稳定的方式实现printName(获取专门的泛型类的名字)?那么代码的多次运行会为同一个类打印相同的字符串?

我使用最新的Xcode测试版.

一些额外要求:

>将传递给printName的类的数量很高.
>可能有多个通用类,但不是很多.

从Xcode 6.3 beta 1开始的新功能

好消息!从6.3开始你可以做:

toString(Gen<Int>())

那会打印:Gen< Swift.Int>

老答案:

如果范围可以减少到T:AnyObject,那么你可以实现它如下:

class Gen<T: AnyObject> {
    var className: String {
        return "Gen<\(NSStringFromClass(T.self))>"
    }
}

猜你在找的Swift相关文章