Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在SwiftyJson中过滤数据_Ios_Json_Swift_Nspredicate_Swifty Json - Fatal编程技术网

Ios 在SwiftyJson中过滤数据

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"

我有一个SwiftyJson对象

我不能过滤那个数组。我已经尝试过这个解决方案。但是我的json格式不同,这就是为什么不工作

[
    {
        "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)
    })