我对Swift还是相当陌生,我正试图了解如何处理nil vars ...
我有两个字典:
var currencyname: NSDictionary = [
"CNY": "Chinese Yuan",
"PLN": "Polish Zloty"
"EUR": "Euro"
]
var rawrates NSDictionary = [
"CNY": "1.34",
"PLN": "1.456"
]
我正在使用元组字典组合它们:
var combinedDictionary:[String:(name:String,rate:String)] = [:]
for key in currencyname.keys.array {
combinedDictionary[key] = (currencyname[key]!,rawrates[key]!)
}
但是,由于字典中found nil while unwrapping an Optional value
的键EUR
与currencyname
字典中的任何键都不匹配,因此出现错误rawrate
。
我知道我必须以某种方式检查密钥是否存在于两个字典中,然后再使用let if
?组合它们。但是我对语法感到困惑……我也曾尝试使用可选值,但没有成功。
所以我的问题是EUR
,由于rawrate
词典中没有匹配的键,我该如何合并这两个词典并排除在combinedDictionary中呢?
感谢您的帮助!
我认为您所追求的是这样的:
let currencyname = [
"CNY": "Chinese Yuan",
"PLN": "Polish Zloty",
"EUR": "Euro"
]
let rawrates = [
"CNY": "1.34",
"PLN": "1.456"
]
var combinedDictionary = [String:(name:String,rate:String)]()
for key in currencyname.keys {
if let val1 = currencyname[key], val2 = rawrates[key] {
combinedDictionary[key] = (val1,val2)
}
}
但是,如果没有更清晰的问题说明,很难确定。无论如何我都不建议这样做。在我看来,这是一个更好的结果:
let currencyname = [
"CNY": "Chinese Yuan",
"PLN": "Polish Zloty",
"EUR": "Euro"
]
let rawrates = [
"CNY": "1.34",
"PLN": "1.456"
]
struct Currency {
let name : String
let rate : String
}
var combinedDictionary = [String:Currency]()
for key in currencyname.keys {
if let val1 = currencyname[key], val2 = rawrates[key] {
combinedDictionary[key] = Currency(name:val1, rate:val2)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句