2017-09-06 141 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打破,因为字典不包含描述它。

相关问题