加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

检查字典是否包含Swift中的值

发布时间:2020-12-14 04:28:47 所属栏目:百科 来源:网络整理
导读:只是简单的任务.我有一个字典var types = [Int:String](),它像一个空的,在一些用户操作后,它填充数据.根据此词典中的空白或某些特定数据,我启用/禁用UI中的按钮. 检查空虚很容易,但如何检查字典是否包含某些值? 编译器建议我使用谓词占位符: types.contai
只是简单的任务.我有一个字典var types = [Int:String](),它像一个空的,在一些用户操作后,它填充数据.根据此词典中的空白或某些特定数据,我启用/禁用UI中的按钮.
检查空虚很容易,但如何检查字典是否包含某些值?
编译器建议我使用谓词占位符:

types.contains(predicate: ((Int,String)) throws -> Bool>)

解决方法

由于您只想检查给定值的存在性,因此可以对字典的值属性应用contains方法(给定本机Swift字典),例如:

var types: [Int : String] = [1: "foo",2: "bar"]
print(types.values.contains("foo")) // true

正如@njuri: answer中所提到的,利用字典的values属性似乎会产生开销(我自己没有验证过)w.r.t.只是直接针对每个Dictionary元素的键值元组中的值条目检查包含谓词.由于Swift很快,所以这不应该是一个问题,除非你正在使用一个庞大的字典.无论如何,如果您想避免使用values属性,您可以查看前面提到的答案中给出的替代方法,或者使用另一个替代方法(字典扩展),如下所示:

extension Dictionary where Value: Equatable {
  func containsValue(value : Value) -> Bool {
    return self.contains { $0.1 == value }
  }
}

types.containsValue("foo") // true
types.containsValue("baz") // false

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读