我正在尝试在我的应用程序中进行一些复杂的过滤,但我不知道下一步该做什么。我的数据由一个字典数组组成,其中每个字典中的值可以是String
, Int
or [String]
.
let person1: [String : Any] = ["first_name" : "John",
"last_name" : "Smith",
"age" : 21,
"skills" : ["C#", "Java", "Swift"]]
let person2: [String : Any] = ["first_name" : "Kim",
"last_name" : "Smith",
"age" : 28,
"skills" : ["Java", "Swift"]]
let person3: [String : Any] = ["first_name" : "Kate",
"last_name" : "Bell",
"age" : 24,
"skills" : ["C#"]]
var people = [person1, person2, person3]
我让用户选择如何过滤这些数据并创建过滤条件的字典。该字典可以有任意数量的键和值。
let filters: [String : [Any]] = ["age" : [28, 24],
"skills" : ["Java", "Swift"]]
在这个例子中,我想向人们展示谁是age
28 或 24 并且有skills
Java 或 Swift 的,这将是person2
这是我到目前为止所拥有的,但它只适用于Int
values:
for (key, values) in filters {
var filteredItems = people.filter {
var match = false
for filterValue in values {
if $0[key] as! Int == filterValue as! Int {
match = true
break
}
else {
match = false
}
}
return match
}
people = filteredItems
}