HI Ich arbeite an den Kerndaten mit 3 Entitäten (Klasse, Studenten, ExamRecord) und ihrem Beziehungsgebiet als:
%Vor%Ich habe ein Prädikat zum Abrufen der Schülerliste für Klasse 5 erstellt.
%Vor%damit bekomme ich alle Schüler der 5. Klasse.
Nun möchte ich auch einen anderen Filter auf die Schüler anwenden.
Abrufen von Schülern, deren Exam Record "result" "Pass" ist. result ist ein Attribut für Schüler in ExamResult entity
Wie kann ich das Compound-Prädikat verwenden?
Bitte korrigieren Sie mich, wenn ich falsch liege
Jede Hilfe wird geschätzt
Danke
Sie können ein zusammengesetztes Prädikat verwenden:
%Vor%Oder Sie kombinieren einfach die Tests mit "AND":
%Vor% Beachten Sie, dass die Argumentliste von predicateWithFormat
nicht nil
-terminiert ist.
Die Anzahl der Argumente wird durch die Anzahl der Formatbezeichner im Format bestimmt
Zeichenfolge.
Zuerst sollten Sie die student - class
relation studentsToClass
nicht wirklich aufrufen. Der Name der Beziehung sollte angeben, welcher Objekttyp sich am anderen Ende befindet.
z. B.
In diesem Fall sollte die Beziehung Student
zu Class
class
heißen, weil das Objekt dort eine einzige Class
Einheit ist.
Die umgekehrte Relation sollte nicht classToStudent
heißen und sollte students
heißen, da das Objekt dort ein NSSet
von mehreren Students
ist.
BEARBEITEN
Nur um das hinzuzufügen. Der Name der Beziehung sollte erklären, WARUM es da ist. Wir können sehen, dass die Beziehung von Klasse zu Schüler ist, aber wenn Sie es "classToStudent" nennen, erklärt es nichts. Was ist, wenn Sie eine zweite Beziehung von Klasse zu Schüler haben? Wie nennt man das. Wenn Sie es attendees
oder pupils
oder attendingStudents
etc nennen, gibt es der Beziehung Bedeutung.
LÖSUNG
In diesem Beispiel werde ich sie anrufen, wie ich sie nennen würde und Sie werden sehen, dass es ein bisschen leichter zu verstehen ist ...
Wie auch immer ...
%Vor% Erstens ist Ihr zitiertes Prädikat wirklich schon falsch. Sie sollten auf das verwaltete Objekt verweisen, nicht auf seine Eigenschaft (d. H. Nicht auf name
von Class
). Es sollte sein:
Sie sollten auch besser lesbare Namen für Ihre Variablen und Eigenschaften auswählen. Also nicht fmt2
, sondern formattingString
. Nicht studentsToClass
, aber form
("Klasse" ist ein spezielles Wort in Ziel-C). Du hast die Idee.
So wird Ihr gewünschtes zusammengesetztes Prädikat so gemacht (kurze Version):
%Vor%Die komplizierte Version, wenn Sie wirklich eine höhere Abstraktionsebene brauchen (was ich bezweifle):
%Vor%Tags und Links nspredicate iphone ios core-data