2014-06-08 286 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