Erstellen Sie ein zusammengesetztes Prädikat in coreData xcode iphone

7

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

    
sagar 18.07.2013, 12:54
quelle

3 Antworten

26

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.

    
Martin R 18.07.2013, 13:03
quelle
2

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%     
Fogmeister 18.07.2013 13:06
quelle
0

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:

%Vor%

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%     
Mundi 18.07.2013 13:04
quelle

Tags und Links