2010-03-26 3 views
9

Ich habe 2 Einheiten, Aufgabe und Liste. Jede Aufgabe hat eine Eins-zu-eins-Beziehung zu einem List-Objekt namens "list", und es gibt eine inverse Beziehung zu List, die eine to-many-Beziehung mit der Task namens "task" hat.Core-Daten - NSPredate zu filtern, um viele Beziehungen

Ich versuche, eine Abrufanforderung mit einem NSPredicate zu verwenden, um alle Aufgaben Objekte zu erhalten, die zu einer bestimmten Liste gehören:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list=%@", theList]; 
[fetchRequest setPredicate:predicate]; 

(wobei „theParent“ ist ein Verweis auf ein List-Objekt). Dies liefert jedoch keine abgerufenen Objekte. Wenn ich das Prädikat herausnehme, werden die Objekte zurückgegeben (also weiß ich, dass sie existieren, und durch NSLogging theList weiß ich, dass ihr Task-Objekte zugeordnet sind).

Dank

Antwort

11

Könnte es ein einfacher Tippfehler in Ihrem Prädikat sein?

Sie haben "list =% @" wenn ich annehme, was Sie wirklich wollen, ist "-Liste ==% @"

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list == %@", theList]; 
[fetchRequest setPredicate:predicate]; 
+3

"=" funktioniert für Eigentum, aber nicht die Beziehung. – zsong

+4

Kharrison und/oder @sza: Können Sie klarstellen, was Sie meinen? [Die NSPredicate-Dokumentation] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-215832) behauptet, dass "= 'und' == 'sind 100% äquivalent, wenn sie in Prädikatformatzeichenfolgen verwendet werden. Gibt es einen undokumentierten Unterschied? – Quuxplusone