当试图理解程序时,或者在某些角落情况下,能够真正找出什么类型的东西是有用的.我知道调试器可以显示一些类型信息,你通常可以依赖类型推断来避免在那些情况下不指定类型,但是,我仍然喜欢像Python这样的东西type()
更新:这在最近的Swift版本中已经更改,obj.dynamicType现在为您提供类型的引用,而不是动态类型的实例.
这个似乎是最有希望的,但到目前为止我还没有找到实际的类型
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Run Code Online (Sandbox Code Playgroud)
我也尝试使用类引用来实例化一个新对象,这确实有效,但奇怪地给了我一个错误,说我必须添加一个required初始化器:
作品:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Run Code Online (Sandbox Code Playgroud)
尽管如此,实际发现任何给定对象的类型仍然只是一小步
编辑:我删除了大量现在无关的详细信息 - 如果您有兴趣,请查看编辑历史记录:)
我想将 MKMapPoint 转换为 NSValue。在 Objective-C 中,我可以使用以下语句来做到这一点:
MKMapPoint point = MKMapPointForCoordinate(location.coordinate);
NSValue *pointValue = [NSValue value:&point withObjCType:@encode(MKMapPoint)];
Run Code Online (Sandbox Code Playgroud)
我怎样才能在斯威夫特做到这一点?谢谢!