2016-09-26 6 views
0

Hier ist meine Antwort-Format:Suche nach einem Wert in Array von Wörterbücher von Array

[ 
    { 
    "id": 9001, 
    "name": "A to B", 
    "description": "A to B via mooncity", 
    "sequence":[ 
     1001, 
     1002, 
     1003 
     ] 
    }, 
{ 
    "id": 9002, 
    "name": "B to D", 
    "description": "B to D via suncity", 
    "sequence":[ 
     1010, 
     1002, 
     1009 
     ] 
    } 
] 

Jetzt möchte ich alle Wörterbücher erhalten, die 1002 in ihren sequence array hat und in ein anderes Array setzen.

ich müde

NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"%K contains[c] %@", @"sequence", @"1002"]; 

Aber das obige Prädikat funktioniert gut für Array von Wörterbüchern. Während es in diesem Fall nicht funktioniert.

Jede Hilfe wird sehr geschätzt.

+0

'@ "ANY Sequenz IN% @", @ [@ (1010)]] '. Ich setze '@ (number)', da es JSON ist, sollte es in 'NSNumber' serialisiert werden (es sei denn du formatierst dein self und verwandelst die Werte in' NSString'. – Larme

+0

Mein Prädikat hat das Format 'ANY stops_sequence IN {" 1002 "}'. Es funktioniert aber nicht. Sein leeres Array zurückgegeben –

Antwort

1

in swift es funktioniert bei mir

let array = ["101","110","133"] 
    let dict = ["sequence":array,"id": "10"] as [String : AnyObject] 

    let array1 = ["100","110","133"] 
    let dict1 = ["sequence":array1,"id": "10"] as [String : AnyObject] 

    let fArray : NSArray = [dict,dict1] as NSArray 


    let pred = NSPredicate(format: "ANY self.sequence contains[c] %@", "100") 

    let test = fArray.filteredArrayUsingPredicate(pred) 

    print(test) 

löschte

[{ 
id = 10; 
sequence =  (
    100, 
    110, 
    133 
); 

}]

+0

Vielen Dank für Ihre Antwort @jignesh. Leider funktioniert es nicht für mich. App stürzt mit dem Fehler 'Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: 'Kann nicht in/enthält Operator mit der Sammlung 1001 (keine Sammlung) ' –

+0

Ich habe versucht, oben Code in Swift und es wird für mich arbeiten, wenn" Sequenz "-Array String-Wert enthält, wenn es Int enthält dann wird es Anwendung abstürzen –

1
NSPredicate *pred = [NSPredicate predicateWithFormat:@"CAST(sequence, 'NSString') contains[cd] %@", @"1002"]; 
NSArray *result = [your_array filteredArrayUsingPredicate:pred]; 
Verwandte Themen