Ios 在SwiftyJson中过滤数据
我有一个SwiftyJson对象 我不能过滤那个数组。我已经尝试过这个解决方案。但是我的json格式不同,这就是为什么不工作Ios 在SwiftyJson中过滤数据,ios,json,swift,nspredicate,swifty-json,Ios,Json,Swift,Nspredicate,Swifty Json,我有一个SwiftyJson对象 我不能过滤那个数组。我已经尝试过这个解决方案。但是我的json格式不同,这就是为什么不工作 [ { "name": "19860", "header": { "start_time": "1519270200", "end_time": "1519299000", "state": "lunch" }, "alerts"
[
{
"name": "19860",
"header": {
"start_time": "1519270200",
"end_time": "1519299000",
"state": "lunch"
},
"alerts": "1",
"venue": {
"location": "Delhi, India",
"timezone": "+05:30"
},
"srs_category": [
0,
1
]
},
{
"name": "19861",
"header": {
"start_time": "1519270200",
"end_time": "1519299000",
"state": "Dinner"
},
"alerts": "1",
"venue": {
"location": "Mumbai, India",
"timezone": "+05:30"
},
"srs_category": [
1,
3
]
},
{
"name": "19862",
"header": {
"start_time": "1519270200",
"end_time": "1519299000",
"state": "lunch"
},
"alerts": "1",
"venue": {
"location": "Surat, India",
"timezone": "+05:30"
},
"srs_category": [
0,
2
]
}
]
我想找到srs_类别包含1的对象。我知道这是可能的循环和条件。但我想通过NSPredicate。如果可能的话,请帮助我
谢谢。使用Swift本机函数,而不是
NSPredicate
数据
表示从某处接收的数据
对象
do {
if let json = try JSONSerialization.jsonObject(with:data) as? [[String:Any]] {
let srsCategory1 = json.first(where: { dict -> Bool in
guard let array = dict["srs_category"] as? [Int] else { return false }
return array.contains(1)
})
print(srsCategory1 ?? "not found")
}
} catch {
print(error)
}
如果有多个项目可以与条件匹配,请将
首先
替换为过滤器
。然后结果是一个非可选数组。使用Swift本机函数,而不是NSPredicate
数据
表示从某处接收的数据
对象
do {
if let json = try JSONSerialization.jsonObject(with:data) as? [[String:Any]] {
let srsCategory1 = json.first(where: { dict -> Bool in
guard let array = dict["srs_category"] as? [Int] else { return false }
return array.contains(1)
})
print(srsCategory1 ?? "not found")
}
} catch {
print(error)
}
如果有多个项目可以与条件匹配,请将
首先
替换为过滤器
。然后结果是一个非可选数组。下面是使用SwiftyJSON的简单方法:
let filtered = JSON(yourArray).arrayValue.filter({
$0["srs_category"].arrayValue.map({ $0.intValue }).contains(1)
})
以下是使用SwiftyJSON的简单方法:
let filtered = JSON(yourArray).arrayValue.filter({
$0["srs_category"].arrayValue.map({ $0.intValue }).contains(1)
})