2017-06-27 2 views
0

Ich verwende CoreData und NSFetchedResultsController in meinem Projekt. Ich habe 2 Einheiten Schule & Studenten, eine Beziehung zu vielen .. eine Schule kann mehrere Studenten haben.NSPredicate Filterbeziehung

Ich versuche, Schulen nach Schulnamen zu filtern und dann Schüler nach Grad so zu filtern, dass ich eine gefilterte Schule bekomme, die NUR die Schüler enthält, die einer bestimmten Note entsprechen.

let fetchRequest = NSFetchRequest<School>(entityName: "School") 
    let predicate = NSPredicate(format: "name = %@ AND ANY students.grade","School 2", "F") 

Das Problem mit dem obigen Code erwähnt Prädikat ist, dass es gibt mir eine „Schule 2“ mit allen Schülern während nur ein einziger Student „F“ Klasse hat.

Ich brauche eine Schuleinheit, die nur den Schüler mit der Note "F" enthalten sollte.

Antwort

0

Das Schulobjekt, das Sie abrufen, gibt immer alle Werte, die es in seiner Beziehung hat, unabhängig davon, wie Sie das Objekt abgerufen haben. Was Sie tun können, ist die Schüler zu filtern. Sie haben also einen Satz school.students und den zweiten Satz, der nur scheiternde Schüler enthält. Da die Filterung der Schüler gespeichert ist, sind Sie nicht auf Kerndateneigenschaften beschränkt, sondern können auch etwas langsamer sein.