我正在学习Swift,并且正在尝试理解有关向下转换的内容。 NSDictionary在Swift中表示为[NSObject:AnyObject]。据我所知,这可以被下载到更具体的类型(例如[Int:String])。当我们谈论Objective-C时,我知道NSObject是基类,但是如何在Swift中将它下载到String或Integer?据我所知,Swift本机类型不是NSObject的子类。
答案 0 :(得分:5)
好问题!实际发生的事情是Objective-C和Swift之间的交互中的一些魔力,让你的生活更轻松:如果你的原始[String: Int]
包含NSDictionary
s,你可以向下转换为NSString
NSNumber
秒。虽然NSString
和NSNumber
确实与String
和Int
的类型不同,但Apple有明显的相关性决定为您进行转换。换句话说,它起作用的原因与此相同:
let object = NSNumber(value: 4)
let swiftVersion = object as Int