2016-08-02 2 views
0

J'essaye de construire un NSPredicate pour satisfaire une relation donnée. Mon modèle de données est le suivant:NSPredicate SUBQUERY pour 1 à plusieurs à plusieurs relation

  • Un objet universitaire a 1 à plusieurs collèges.
  • Un objet collégial a 1 à plusieurs salles de classe.
  • Chaque classe a un type de classe donné une propriété spécifiée je suis intéressé.

Cette propriété est appelée typeDescription Je veux construire une requête qui peut me donner toutes les universités qui ont un typeDescription égal à la valeur "computerlab". Les objets que j'ai à ma disposition sont une liste d'Universités. Je suis assez sûr que je vais devoir construire un NSPredicateSUBQUERY mais je ne suis pas tout à fait sûr de la façon de construire cela pour satisfaire mes exigences. Si quelqu'un a des commentaires sur la bonne façon de créer cette requête, ce serait très apprécié.

+0

tout échantillon de résultat que vous voulez à partir du tableau échantillon donné trop .. besoin de plus de détails –

+1

Pourquoi avez-vous seulement avoir une liste d'universités? Vous pouvez exécuter la requête sur n'importe quelle entité que vous voulez (et mapper vers le résultat souhaité) – Wain

Répondre

1

Pour un à plusieurs à plusieurs relations, vous avez besoin nicher deux clauses de sous-requête:

NSPredicate(format:"SUBQUERY(colleges, $c, SUBQUERY($c.classrooms, $room, $room.classroomType.typeDescription == %@)[email protected] > 0)[email protected] > 0","computer lab") 
+0

Une des relations to-many peut utiliser 'ANY':' "SUBQUERY (collèges, $ c, ANY $ c.classrooms.classroomType.typeDescription ==% @). @ count> 0 "," laboratoire informatique "'. – Willeke

+0

Merci, cette réponse a fonctionné pour moi. – zic10