dynamicType(见this question)
更新:这已经在最近版本的Swift中更改,obj.dynamicType现在提供了对类型的引用,而不是具有动态类型的实例。
这个似乎是最有前途的,但到目前为止我还没有找到实际的类型
class MyClass { var count = 0}let mc = MyClass()# update: this Now evaluates as truemc.dynamicType === MyClass.self
我也尝试使用类引用来实例化一个新的对象,这是工作,但奇怪地给了我一个错误,说我必须添加一个必需的初始化:
作品:
class MyClass { var count = 0 required init() { }}let myClass2 = MyClass.selflet mc2 = MyClass2()
仍然只有一小步,实际上发现任何给定的对象的类型
编辑:我删除了大量的现在不相关的详细信息 – 看看编辑历史,如果你有兴趣:)
在Swift 2.0中,做这种类型内省的正确方法是用 Mirror struct,let stringObject:String = "testing" let stringArrayObject:[String] = ["one","two"] let vIEwObject = UIVIEw() let anyObject:Any = "testing" let stringMirror = Mirror(reflecting: stringObject) let stringArrayMirror = Mirror(reflecting: stringArrayObject) let vIEwMirror = Mirror(reflecting: vIEwObject) let anyMirror = Mirror(reflecting: anyObject)
然后从Mirror结构体访问类型本身,你将使用属性subjectType像这样:
// Prints "String" print(stringMirror.subjectType) // Prints "Array<String>" print(stringArrayMirror.subjectType) // Prints "UIVIEw" print(vIEwMirror.subjectType) // Prints "String" print(anyMirror.subjectType)
然后你可以使用这样的东西:
if anyMirror.subjectType == String.self { print("anyObject is a string!") } else { print("anyObject is not a string!") }总结
以上是内存溢出为你收集整理的你如何找出一个对象的类型(在Swift中)?全部内容,希望文章能够帮你解决你如何找出一个对象的类型(在Swift中)?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)