在Swift中过滤数组内的字典

BoS*_*oud 3 arrays array-filter swift xcode6

我有一个数组字典示例:

[{
    "CATEGORYNAME" = "name0";
    "CATEGORYSUBID" = 2;
    "ID" = 1;
}, {
    "CATEGORYNAME" = "name1";
    "CATEGORYSUBID" = 2;
    "ID" = 2;
}, {
    "CATEGORYNAME" = "name2";
    "CATEGORYSUBID" = 0;
    "ID" = 3;
}]
Run Code Online (Sandbox Code Playgroud)

我曾经在Objective C中过滤它像这样

JSON_data = [[[Global SharedData]Categorys] filteredArrayUsingPredicate:
[NSPredicate predicateWithFormat:@"(CATEGORYSUBID == %@)", Filter]];
Run Code Online (Sandbox Code Playgroud)

我尝试使用阵列过滤器,但没有成功

var JSON_data = Global.SharedData().Categorys
JSON_data = JSON_data.filter( ?????
Run Code Online (Sandbox Code Playgroud)

JSON_data包含我用Printin打印的所有数据

naz*_*naz 11

过滤字典很简单,如下所示.我们筛选低于30岁的年龄.

var visitors = [["age" : 22], ["age" : 41], ["age" : 23], ["age" : 30]]

var filteredVisitors = visitors.filter({
    $0["age"] < 30 //access the value to filter
})

println(filteredVisitors)
//[["age" : 22], ["age" : 23]]
Run Code Online (Sandbox Code Playgroud)

更多信息:过滤字典或对象属性的Swift数组


Dav*_*rry 5

这看起来只是一个如何翻译的简单问题.您最好的选择是通过WWDC的各种会话,但字面翻译是:

let categories = Global.SharedData().Categorys()
JSON_data = categories.filter({
    if let subid = $0["CATEGORYSUBID"] {
        return subid == filter
    } else {
        return false
    }
})
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您需要发布有关Global,SharedData,Categorys和JSON_data的更多信息.