在Swift中过滤数组内的字典

时间:2014-06-08 16:50:08

标签: arrays swift xcode6 array-filter

我有一个带字典的数组示例:

[{
    "CATEGORYNAME" = "name0";
    "CATEGORYSUBID" = 2;
    "ID" = 1;
}, {
    "CATEGORYNAME" = "name1";
    "CATEGORYSUBID" = 2;
    "ID" = 2;
}, {
    "CATEGORYNAME" = "name2";
    "CATEGORYSUBID" = 0;
    "ID" = 3;
}]

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

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

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

var JSON_data = Global.SharedData().Categorys
JSON_data = JSON_data.filter( ?????

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

2 个答案:

答案 0 :(得分: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]]

此处有更多信息:Filtering a Swift Array of Dictionaries or Object property

答案 1 :(得分:5)

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

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

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