用其他自定义值替换nil值

时间:2015-12-29 19:19:16

标签: ios swift syntax

我使用的是用Swift编写的keychain包装器。 当值为nil时,我使用的这个包装器会自动将数据保存为“nil”,而不是保存为实际的nil值。

For ex, ["last_name" : "nil"].

在我的iOS应用程序中的一个标签中,我返回last_name值。 令我困扰的是标签上的文字在没有任何内容时会说“无”。

我记得在Swift中有一种类似A的语法? B如果A无效则放入B。但我现在不记得了。 在我的应用程序中,我想要类似下面的内容:

if the value I'm looking for is nil, then input "" instead of "nil"
If keychain["last_name"] == nil ?? ""

我知道这是一个可怕的解释,但这是我能想到的全部。

1 个答案:

答案 0 :(得分:2)

??nil coalescing operator。它用于展开选项 - a ?? ba != nil ? a! : b的简写。

您可能希望使用三元运算符。你甚至可以将它们组合起来:

let lastName = keychain["last_name"] == "nil" ? "" : (keychain["last_name"] ?? "")

也就是说,在获取钥匙串后立即过滤掉这些响应可能更容易,而不是每次检查:

var keychain = ["first_name" : "aaron", "last_name" : "nil"]

keychain.forEach { if $0.1 == "nil" { keychain.removeValueForKey($0.0) } }

print(keychain)  //["first_name": "aaron"]

$0简写参数名称。这是相同代码的长格式版本:

keychain.forEach { (key, value) -> () in
    if value == "nil" {
        keychain.removeValueForKey(key)
    }
}