只是简单的任务.我有一个字典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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。