我目前正在使用以下(笨拙的)代码来确定(非空的)Swift字典是否包含给定的键,并从同一字典中获取一个(任意)值.

如何在Swift中更优雅地表达这一点?

// excerpt from method that determines if dict contains key
if let _ = dict[key] {
    return true
}
else {
    return false
}

// excerpt from method that obtains first value from dict
for (_, value) in dict {
    return value
}

推荐答案

你不需要any个特殊的代码就可以做到这一点,因为字典已经做到了这一点.当您获取dict[key]时,您将看到know字典是否包含键,因为您返回的可选值不是nil(并且它包含值).

因此,如果你想回答字典是否包含密钥的问题,可以问:

let keyExists = dict[key] != nil

如果你想要这个值,并且字典中包含了这个键,那么说:

let val = dict[key]!

但是,如果像通常发生的那样,你不知道它包含密钥——你想获取并使用它,但前提是它存在——那么就使用if let:

if let val = dict[key] {
    // now val is not nil and the Optional has been unwrapped, so use it
}

Swift相关问答推荐

map 视图上的SwiftUI渐变折线

阴影动画的动画不流畅

是否可以循环遍历SWIFT子类并访问它们的静态变量S?

修改数组中每个类实例的属性

String.Index encodedOffset已弃用,但建议的替代方案不起作用

如何在闭包中使用构造 await sync

如何制作具有 2 个视图的 3D 旋转动画?

如何使用 ISO 国家代码(2 个字母)查找区域设置标识符

从 Int 到 String 的属性更改引发 SwiftUI 视图不更新

Swift - 订阅视图之外的绑定值

数组使用偏移量对自身执行 XOR

从 Swift 列表中的行中检索值

试图同时实现两个混合过渡

判断 Swift 程序是否正在输出到终端

如何在不阻塞 UI 更新的情况下使用 Swift Concurrency 在后台执行 CPU 密集型任务?

如何在 SwiftUI 中打开 ImagePicker?

如何在 Swift 中将对象归零

将活动指示器 colored颜色 更改为黑色

Swift UITableView reloadData 在一个闭包中

这里出了什么问题:实例成员不能用于类型