如何安全地快速解开nil值?

anto0522

我对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的键EURcurrencyname字典中的任何键都不匹配,因此出现错误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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Swift 的字典中安全地解开深度嵌套的值?

来自分类Dev

如何安全地解开textField.text并将其安全地存储在属性中?

来自分类Dev

如何快速安全地存储密码?

来自分类Dev

如何从远程快速安全地访问 DSM?

来自分类Dev

如何安全地解开我从 Firebase 中的数据库调用的这个可选 URL?

来自分类Dev

如何安全地传递字符串值?

来自分类Dev

如何安全地传递字符串值?

来自分类Dev

快速致命错误:解开Optional值时意外发现nil

来自分类Dev

整体上快速安全地对ZFS池进行脱机?

来自分类Dev

如何安全地扩展Ubuntu分区?

来自分类Dev

如何安全地销毁QThread?

来自分类Dev

如何安全地发布StringBuffer?

来自分类Dev

如何安全地搬运包裹intellij?

来自分类Dev

如何安全地重构动态语言?

来自分类Dev

如何安全地登录用户

来自分类Dev

如何安全地从终端关闭Xfce?

来自分类Dev

您如何安全地调用vsnprintf()?

来自分类Dev

如何安全地试用叉子炸弹

来自分类Dev

如何安全地等待异步方法?

来自分类Dev

如何安全地从终端关闭Xfce?

来自分类Dev

如何安全地扩展Ubuntu分区?

来自分类Dev

如何安全地更新网站?

来自分类Dev

如何安全地共享班级成员?

来自分类Dev

如何安全地登录用户

来自分类Dev

如何安全地取出包裹

来自分类Dev

如何安全地减小分区的大小?

来自分类Dev

如何安全地停止截断命令

来自分类Dev

如何安全地存储各种凭证?

来自分类Dev

如何安全地移除 gwibber?