2014-07-10 17 views
2

我聲明瞭一個Dictionary<String, Any>,它有一些字符串,數組和值作爲值。 當我試圖找回基於String密鑰的值時,即使密鑰標識的值是真實的Array,我也無法將其轉換爲Array, 。從字典中獲取值<String, Any>

let lColorValues = lTabBarDictionary[TabBarKey.tabBarColor] as Array; 

p.s. TabBarKey.tabBarColor是一個字符串

蘋果斯威夫特編程的書提供與存儲不同類型的對象的Array一個例子,他們用as向下轉型對象,這似乎爲Array而不是Dictionary做工精細。

我錯過了什麼嗎?如何獲得此類詞典的值?

回答

3

你必須指定Array持有的類型,例如:

class TabBarKey { 
    class var tabBarColor : String { 
     return "key" 
    } 
} 

let arr = ["1", "2", "3"] 

var lTabBarDictionary = Dictionary<String, Any>() 

lTabBarDictionary[TabBarKey.tabBarColor] = arr 

let val = lTabBarDictionary[TabBarKey.tabBarColor] as Array<String> 
在最後一行

,我使用Array<String>代替Array。你應該做同樣的事情,當然使用數組保存的適當的泛型類型。

測試代碼在操場上,它打印預期的數組。

+0

我做了什麼愚蠢的事情:))當然,它必須是陣列而不是陣列。謝謝 – azimov

+1

這不是愚蠢的......新語言,新事物做事的方式,所以忽略顯而易見的事情很容易和正常:) – Antonio

相關問題