[英]How can I access some object from `Any` Type?
在Swift 2.2中,我曾經這樣寫過
let dict = [String: AnyObject]()
let value = dict.objectForKey("price") as! Double
print(value)
但隨着AnyObject
現在與更換不同類型Any
我怎么能訪問字典中的值作為沒有方法objectForKey
類型的任何。 我需要輸入AnyObject
為AnyObject
嗎?
試試這樣吧。
let dict: [String: Any] = ["value1":1.5,"value2":2.5]
if let value = dict["value1"] as? Double {
print(value)
}
檢查IBM Swift Sandbox以運行演示。
注意:在Swift中,如果使用subscript
而不是value(for:)
和object(for:)
。
首先,您不能將objectForKey
用於swift本機類型。 你可以簡單地使用我在評論中提到的下標,也可以使用if let for safe unwrap。
let dict: [String: Any] = ["price": 2.0 ]
if let value = dict["price"] as? Double {
print(value)
}
注意:與往常一樣,不要在Swift中使用NSMutableDictionary。 這種類型缺乏類型信息
嘗試這個...
let dict : [String: Any] = [:]
let value = dict["price"] as! Double
print(value)
你不應該使用objectForKey(_:)
是NSDictionary
上的一個方法。 直到Swift 2.3,你可以在Swift Dictionary
上調用這個NSDictionary
方法,因為從Swift的Dictionary
到NSDictionary
有隱含的橋接。 為了擺脫Foundation
數據類型,在Swift 3中刪除了這種隱式橋接。如果您正在使用Swift的Dictionary
,那么首先沒有理由使用它。
剛下標在Dictionary
:
let dict: [String: Any] = ["name": "apple", "price": 1.0]
let value = dict["price"] as! Double
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.