根據Swift 3的文檔,NSNumber被橋接到Swift本機類型,如Int,Float,Double,...但是當我嘗試在Dictionary中使用本地類型時,我得到編譯錯誤固定使用NSNumber,爲什麼?這是我的代碼:NSNumber VS Int,Float in Swift Dictionary
var dictionary:[String : AnyObject] = [:]
dictionary["key"] = Float(1000)
並且編譯器給出錯誤「無法將Float類型的值賦值給AnyObject」。如果我按照以下方式編寫代碼,則不存在任何問題,因爲NSNumber實際上是一種對象類型。
dictionary["key"] = NSNumber(value:Float(1000))
斯威夫特編譯器還提示糾正代碼
dictionary["key"] = Float(1000) as AnyObject
,但我不知道這是否是做或不正確的事情。如果確實在NSNumber和本地類型(Int,Float等)之間存在橋接,那麼爲什麼編譯器強制將類型轉換爲AnyObject?
相關:http://stackoverflow.com/questions/39321421/working-with-nsnumber-integer-values-in-swift- 3 –