2013-01-17 8 views
5

Einfache Frage in Bezug auf NSPredicate. Ich versuche, meine Prädikat mit „bestanden in“ Werte wie so zu konstruieren:NSPredicate PrädikatWithFormat Übergabe in Name des Attributs

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"%@ == %@",key,[changesDict valueForKey:@"Id"] ]; 

Allerdings habe ich diese nicht in der Lage zu bekommen richtig zu arbeiten. Wenn ich den tatsächlichen Wert einfüge, den ich durchlasse, funktioniert es aber. So funktioniert das:

NSPredicate* currentPredicate = [NSPredicate predicateWithFormat:@"contactId == %@",[changesDict valueForKey:@"Id"] ]; 

(Hinweis i ContactID eingeführt, wie zum vorigen Beispiel Gegensatz, wo ich einen String mit dem gleichen Namen übergeben)

zu beheben ich NSLogged die beiden Prädikate an ihren Beschreibungen suchen und sie waren anders. Ich werde sie unten zeigen.

Dies ist die eine Arbeits

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] contactId == "5878" 

Dies ist nicht arbeitet ein

2013-01-17 10:29:25.513 TestingCoreData[1776:3b03] "contactId" == "5878" 

So kann ich Art sehen von, dass es eine Zeichenfolge ist eingefügt, wo ich wirklich nur das wollen Name des Attributs, das ich später in der Abrufanforderung verwenden werde. Aber gibt es einen Weg, dies durch die Weitergabe von Werten zu erreichen?

Antwort

14

Für Schlüssel oder Schlüsselpfade, müssen Sie das %K Format verwenden:

[NSPredicate predicateWithFormat:@"%K == %@", key, [changesDict valueForKey:@"Id"]]; 

(. Siehe Parser Basics in dem "Prädikat Programming Guide")

+0

Perfect! Link auch nützlich. Vielen Dank! – hatunike

+0

@hatunike: Gern geschehen! –