当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
只是简单的任务.我有一个字典var types = [Int:String](),它像一个空的,在一些用户操作后,它填充数据.根据此词典中的空白或某些特定数据,我启用/禁用UI中的按钮. 检查空虚很容易,但如何检
只是简单的任务.我有一个字典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
网友评论