2017-03-29 4 views
1

Ich habe das folgende JSON-Objekt als self.pElements gespeichert. Ich habe eine search bar, die verwendet werden soll, um Artikel basierend auf der name zu filtern.NSPredate Filterung

[ 
{"id":"1","name":"Baked Chicken","category":"1","price":"5.49"}, 
{"id":"2","name":"Beef Kabob","category":"2","price":"5.49"}, 
{"id":"3","name":"Beef Gyro","category":"1","price":"5.49"}, 
{"id":"4","name":"Lamb Gyro","category":"4","price":"5.49"} 
] 

Ich versuche, durch name zu filtern wie folgt, aber es gibt immer ich null. Ich tippe auch nur Beef wurde nichts zurück

pTempElements =[[NSMutableArray alloc] initWithArray:[self.pElements filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"name = %@", self.searchBar.text]]]; 
+0

Keiner der "Name" -Werte ist gleich "Beef". – rmaddy

+0

'name =' => es bedeutet eine "perfekte Übereinstimmung". Vielleicht möchten Sie es ersetzen durch 'name BEGINSWITH [c]' (die [c] ist für den Fall insenstive, um "Rindfleisch" in Ordnung zu sein. – Larme

+0

Könnten Sie bitte ein kleines Beispiel geben? Was ist, wenn Benutzer nur 'Gyro' eintippt? – hotspring

Antwort

1

Wenn Sie Strings filtern möchten, die den Suchbegriff enthalten, verwenden contains[cd]:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[cd] %@", searchText]; 

Für Liste der möglichen Zeichenfolgenvergleichen kann man Siehe Predicate Format String Syntax: String Comparisons in der Prädikat-Programmieranleitung .