是否有一种方法可以在swift中打印变量的运行时类型?例如:
var now = NSDate()
var soon = now.dateByAddingTimeInterval(5.0)
println("\(now.dynamicType)")
// Prints "(Metatype)"
println("\(now.dynamicType.description()")
// Prints "__NSDate" since objective-c Class objects have a "description" selector
println("\(soon.dynamicType.description()")
// Compile-time error since ImplicitlyUnwrappedOptional<NSDate> has no "description" method
在上面的例子中,我正在寻找一种方法来显示变量“soon”的类型是ImplicitlyUnwrappedOptional<NSDate>,或至少NSDate!
您仍然可以通过className(返回String)访问该类。
实际上有几种方法来获取类,例如classForArchiver, classForCoder, classForKeyedArchiver(都返回AnyClass!)
无法获取原语的类型(原语不是类)。
例子:
var ivar = [:]
ivar.className // __NSDictionaryI
var i = 1
i.className // error: 'Int' does not have a member named 'className'
如果你想获取一个原语的类型,你必须使用bridgetooobjecvec()。例子:
var i = 1
i.bridgeToObjectiveC().className // __NSCFNumber
您仍然可以通过className(返回String)访问该类。
实际上有几种方法来获取类,例如classForArchiver, classForCoder, classForKeyedArchiver(都返回AnyClass!)
无法获取原语的类型(原语不是类)。
例子:
var ivar = [:]
ivar.className // __NSDictionaryI
var i = 1
i.className // error: 'Int' does not have a member named 'className'
如果你想获取一个原语的类型,你必须使用bridgetooobjecvec()。例子:
var i = 1
i.bridgeToObjectiveC().className // __NSCFNumber