2016-07-15 91 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