我有一个[String:String]字典.我想获得与包含字符串“S”的任何键相关联的值.订单无关紧要.
这很简单:只需获取所有键,迭代,返回第一个匹配条件.
由于您只对任何匹配值感兴趣,
您可以使用indexOf()方法查找第一个匹配项
字典条目.这是因为
字典是键/值对的集合.
您可以使用indexOf()方法查找第一个匹配项
字典条目.这是因为
字典是键/值对的集合.
斯威夫特2:
let dict = ["foo": "bar","PQRS": "baz"] let searchTerm = "S" if let index = dict.indexOf({ (key,_) in key.containsString(searchTerm) }) { let value = dict[index].1 print(value) } else { print("no match") }
一旦找到匹配的键,谓词就返回true
并且枚举停止.索引是一个“字典索引”
可以直接用于获取相应的字典条目.
对于不区分大小写的键搜索,请替换谓词
{ (key,_) in key.rangeOfString(searchTerm,options: .CaseInsensitiveSearch) != nil }
在Swift 3中,您可以使用first(where :)来查找第一个匹配项
元素,这可以保存一个字典查找:
if let entry = dict.first(where: { (key,_) in key.contains(searchTerm) }) { print(entry.value) } else { print("no match") }
对于不区分大小写的键搜索,_) in key.range(of: searchTerm,options: .caseInsensitive) != nil }