2014-06-08 86 views
3

内部数组过滤字典我有字典例如数组:斯威夫特

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

我用来过滤它的目标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

012打印所有数据

回答

5

这看起来只是一个如何翻译的简单问题。最好的选择是要经过从WWDC的各种会议,但直译是:

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

如果不工作,你就需要张贴有关如何全局,SharedData,和的categorys更大量的信息JSON_data。

+0

我认为这是在迅速无filteredArrayUsingPredicate和你的代码的结果是:“AnyObject []”没有一个名为成员'filteredArrayUsingPredicate' – BoSoud

+0

是全球的,共享的数据和Categorys在迅速,或客观-C? –

+0

他们在目标-C我已经导入他们和数组填充 – BoSoud

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