簡體   English   中英

如何從“任何”類型訪問某些對象?

[英]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類型的任何。 我需要輸入AnyObjectAnyObject嗎?

試試這樣吧。

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的DictionaryNSDictionary有隱含的橋接。 為了擺脫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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM