2017-09-06 145 views
0
var number : UInt16 = 20_168 
var numberString : String = String(number) 
var wordEquiv = [ "1": "One", "2": "Two", "3": "Three" , "4": "Four" , "5": "Five", "6": "Six", "7": "Seven", "8": "Eight", "9": "Nine"] 
for i in numberString.characters { 
    print("\(i) - \(wordEquiv[i]!)") 
} 

當我嘗試打印wordEquiv [key]時,它似乎在工作。但是當我嘗試在一個循環中使用它,它顯示了一個錯誤,如何解決這一問題?因爲我想顯示每個字符等同numberString的單詞。對wordEquiv [i]中成員'下標'的歧義引用

+0

如果您需要使用索引來遍歷集合,然後居然要一本字典,其中鍵索引你不:你想要的數組。 – Moritz

回答

0

好吧,我固定它,我發現不兼容類型的鍵是錯誤,我試圖把一個類型的字符作爲重點在for循環,而不是字符串。 這裏是正確的答案

var number : UInt16 = 20_168 
var numberString : String = String(number) 
var wordEquiv : [Character : String] = ["0": "Zero", "1": "One", "2": "Two", "3": "Three" , "4": "Four" , "5": "Five", "6": "Six", "7": "Seven", "8": "Eight", "9": "Nine"] 
for i in numberString.characters { 

    print("\(i) - \(wordEquiv[i]!)") 
} 
0

使用此代碼 -

let number : UInt16 = 20_168 
var numberString : String = String(number) 
var wordEquiv = [ "1": "One", "2": "Two", "3": "Three" , "4": "Four" , "5": "Five", "6": "Six", "7": "Seven", "8": "Eight", "9": "Nine"] 
for i in numberString.characters { 
    let string = String(i) 
    if let word = wordEquiv[string] { 
     print("\(i) - \(wordEquiv[string]!)") 
    } 
} 
+0

刪除崩潰,PLZ現在檢查。 –

1

這是因爲性格和String是不同的類型。由於您的wordEquiv字典需要String,添加適當的轉換:

print("\(i) - \(wordEquiv[String(i)]!)") 

或者,你可以讓你的字典裏從字符「映射」到String,避免了轉換。

注:你的代碼將在打印0打破,因爲字典不包含描述它。

相關問題