2015-11-23 62 views
0

我想將數組數值數據與列標籤關聯起來,所以我想用一個將字符串映射到浮點數組的字典進行建模。我試圖通過用空數組初始化鍵值來填充字典,但我一直在獲取可選數組。下面是一個例子,在Swift中使用非可選的空數組初始化字典

var labels = [ "pine", "elm", "palm" ] 
var dframe = [String:[Float]]() 
for label in labels { 
    dframe[label] = [Float]() 
} 
print(dframe.dynamicType) // --> Dictionary<String, Array<Float>> 
print(dframe["pine"].dynamicType) // --> Optional<Array<Float>> 

我感到困惑爲什麼在for循環的初始化[Float]()產生一個可選的陣列。如果我在for循環中說[Float]()!,那麼我得到一個錯誤,說我「無法強制展開非可選類型的值[Float]'」。有任何想法嗎?我只想要一個簡單的,非可選的字符串映射到浮點數組。我正在使用XCode 7.1.1和Swift 2.1。謝謝!

回答

1

當你訪問一個字典,:

let x = dframe["pine"] 

編譯器不知道如果你傳遞一個有效的密鑰到字典中,如果你沒有,它將返回零。可選部分不在數組初始化中,而是在字典的值搜索中。

+1

現在有道理,謝謝!我知道這種行爲必須有合理的解釋。 – cjohnson318