2014-07-10 135 views
3

我在這裏找到了關於stackoverflow的幾個問題,但沒有一個能解決我的問題。從字典中獲取AnyObject

我有一個Dictionary <String, AnyObject>填充不同類型的對象(整數,字符串,數組)。 當我想基於關鍵字得到任何價值,我能唯一的辦法就是

let lTitle: AnyObject? = content["title"]; // content is a Dictionary 
    mTitleLabel.text = lTitle as String; 

它看起來太可怕了我,但我想從另一個計算器的問題,提示和他們沒有工作。

有沒有人知道另一種更簡單的方法從Dictionary得到AnyObject

修訂

它會工作,即使這樣mTitleLabel.text = content["title"] as AnyObject? as String

回答

0

這工作得很好

mTitleLabel.text = content[ListCellContentKey.title]! as String; 

不要忘記檢查,如果字典的鍵返回一個值,否則會崩潰時,你會試圖迫使展開

0

試試這個

mTitleLabel.text = content["title"] as? NSString 
0

你想在你的字典中的值是AnyObject? Int,String和Array都符合Any,但不符合AnyObject。

如果您將Foundation類導入到您的項目中,Swift有時會將Int轉換爲NSNumber,將String轉換爲NSString並將其轉換爲NSArray而不是拋出錯誤。這可能就是爲什麼如果你想從AnyObject轉到String的話,你必須進行多步轉換,因爲你必須通過NSString,然後將它連接起來。

如果你讓你的字典[String:Any]它變得更乾淨。

var content: Dictionary<String, Any> = ["title":"myTitle"] 
let lTitle = content["title"] as String