只是简单的任务.我有一个字典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