一尘不染

如何找出对象的类型(在Swift中)?

swift

当试图理解一个程序时,或者在某些极端情况下,能够真正找出某种类型的东西很有用。我知道调试器可以向您显示一些类型信息,并且您通常可以依靠类型推断来避免在那种情况下不指定类型,但是我仍然很想拥有类似Python的东西type()

更新: 在Swift的最新版本中对此进行了更改,obj.dynamicType现在为您提供了对类型的引用,而不是动态类型的实例。

这似乎是最有前途的,但到目前为止我还无法找出实际的类型

class MyClass {
    var count = 0
}

let mc = MyClass()

# update: this now evaluates as true
mc.dynamicType === MyClass.self

我还尝试使用类引用实例化一个 确实 有效的新对象,但奇怪地给我一个错误,说我必须添加一个required初始化程序:

作品:

class MyClass {
    var count = 0
    required init() {
    }
}

let myClass2 = MyClass.self
let mc2 = MyClass2()

尽管实际上只是发现任何给定对象类型的一小步

编辑 :我已经删除了大量现在不相关的细节-如果您有兴趣,请查看编辑历史记录:)


阅读 260

收藏
2020-07-07

共1个答案

一尘不染

Swift 3版本:

type(of: yourObject)
2020-07-07