按键名搜索词典数组

Ste*_*hen 3 arrays search dictionary ios swift

我有一个字典数组,我需要搜索并返回匹配的Dict

let foo = [
    ["selectedSegment":0, "severity":3, "dataDictKey": "critical"],
    ["selectedSegment":1, "severity":2, "dataDictKey": "major"],
    ["selectedSegment":2, "severity":1, "dataDictKey": "minor"],
]
Run Code Online (Sandbox Code Playgroud)

foo,我怎样才能找到severity:2并获得匹配的Dict?

vad*_*ian 8

使用该filter功能

let foo = [
  ["selectedSegment":0, "severity":3, "dataDictKey": "critical"],
  ["selectedSegment":1, "severity":2, "dataDictKey": "major"],
  ["selectedSegment":2, "severity":1, "dataDictKey": "minor"],
]

let filteredArray = foo.filter{$0["severity"]! == 2}
print(filteredArray.first ?? "Item not found")
Run Code Online (Sandbox Code Playgroud)

要么 indexOf

if let filteredArrayIndex = foo.indexOf({$0["severity"]! == 2}) {
  print(foo[filteredArrayIndex])
} else {
  print("Item not found")
}
Run Code Online (Sandbox Code Playgroud)

要么 NSPredicate

let predicate = NSPredicate(format: "severity == 2")
let filteredArray = (foo as NSArray).filteredArrayUsingPredicate(predicate)
print(filteredArray.first ?? "Item not found")
Run Code Online (Sandbox Code Playgroud)

Swift 3更新:

  • indexOf( 已重命名为 index(where:
  • filteredArrayUsingPredicate(predicate) 已重命名为 filtered(using: predicate)