只是简单的任务。我有一个字典 var types = [Int : String]()
初始化时像一个空的,在一些用户操作后它填充了数据。根据这本词典中的空白或一些特定数据,我在 UI 中启用/禁用一个按钮。
检查是否为空很容易,但是如何检查字典是否包含某个值呢?
编译器建议我使用谓词占位符:
types.contains(predicate: ((Int, String)) throws -> Bool>)
最佳答案
由于您只想检查给定的 值 是否存在,您可以对字典的 values
属性应用 contains
方法(给定 native Swift 字典),例如
var types: [Int : String] = [1: "foo", 2: "bar"]
print(types.values.contains("foo")) // true
如 @njuri: answer 中所述,使用字典的 values
属性似乎会产生开销(我自己还没有验证过)w.r.t.只需根据每个 Dictionary
元素的键值元组中的值条目直接检查 contains
谓词。因为 Swift 很快,所以这应该不是问题,但是,除非你正在使用一个巨大的字典。无论如何,如果您想避免使用 values
属性,您可以查看上述答案中给出的替代方案,或者使用另一种替代方案(Dictionary
扩展)如下:
extension Dictionary where Value: Equatable {
func containsValue(value : Value) -> Bool {
return self.contains { $0.1 == value }
}
}
types.containsValue("foo") // true
types.containsValue("baz") // false
关于swift - 检查字典是否包含 Swift 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38451252/