2010-03-26 6 views
9

J'ai 2 entités, tâche et liste. Chaque tâche a une relation «un à un» avec un objet List appelé «list», et il existe une relation inverse avec List, qui a une relation to-many avec Task appelée «tasks».Données de base - NSPredicate pour filtrer la relation to-many

J'essaie d'utiliser une demande de récupération avec un NSPredicate pour obtenir tous les objets de la tâche qui appartiennent à une liste:

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

(où « theParent » est une référence à un objet de la liste). Cependant, cela ne renvoie aucun objet récupéré. Si je retire le prédicat, alors les objets sont retournés (donc je sais qu'ils existent, et par NSLogging theList je sais qu'il a des objets Tâche qui lui sont associés).

Merci

Répondre

11

pourrait-il être une simple faute de frappe dans votre prédicat?

Vous avez « liste =% @ » quand je suppose que ce que vous voulez vraiment est « Liste ==% @ »

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

« = » fonctionne pour la propriété, mais pas la relation. – zsong

+4

kharrison et/ou @sza: Pouvez-vous clarifier ce que vous voulez dire? [La documentation de NSPredicate] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-215832) affirme que «= 'et' == 'sont équivalents à 100% lorsqu'ils sont utilisés dans des chaînes de format de prédicat. Y a-t-il une différence non documentée? – Quuxplusone

Questions connexes