加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:36:44 所属栏目:百科 来源:网络整理
导读:在 Swift中获得一个类的名称很容易: import Foundationclass GenT { init() { }}func printName(obj: AnyObject) { dump(NSStringFromClass(obj.dynamicType))}let a: GenString = Gen()let b: GenInt = Gen()printName(a)printName(b) 但是,如果您运行上述
在 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))>"
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读