2016-07-15 75 views
3

我正在学习Swift,并试图理解关于向下转换的内容。 NSDictionary在Swift中表示为[NSObject:AnyObject]。从我所知道的情况来看,这可以降为更具体的类型(例如[Int:String])。当我们谈论Objective-C时,我发现NSObject是基类,但是它在Swift中可以降级为String或Integer吗?这是我的理解,Swift本机类型不是NSObject的子类。Swift中向下转换NSObject

回答

5

好问题!实际发生的是Objective-C和Swift之间的互动中的一些魔力,让您的生活更轻松:如果您的原始NSDictionary包含NSString s和NSNumber s,则可以下调到[String: Int]。虽然NSStringNSNumber确实与StringInt不同,但Apple存在这样一个明显的相关性,即决定为您进行转换。换句话说,它的工作原理与此相同:

let object = NSNumber(value: 4) 
let swiftVersion = object as Int