erstellen Sie ein Zusammengesetztes Prädikat in coreData xcode iphone
HALLO, ich arbeite auf die Kern-Daten mit 3 Personen (Klasse,Schüler,ExamRecord) und Ihre Beziehungen-Bereich wie :
Class<------>> Students <------> ExamRecord
Erstellte ich ein Prädikat für das Holen der Liste der Schüler für die Klasse 5..
NSString * fmt2 = @"studentsToClass.className=%@";
NSPredicate * p2 = [NSPredicate predicateWithFormat:fmt2,@"5th",nil];
damit bin ich immer alle Schüler der Klasse 5.
Ich jetzt auch anwenden möchten Sie einen weiteren filter auf die Schülerinnen und Schüler abgeholt werden.
Holen Studierende, deren Prüfung-Aufzeichnung "Ergebnis" ist "Pass".Ergebnis ist ein Attribut für Schüler in ExamResult Person
Wie kann ich Zusammengesetzte Prädikat in diesem ?
Bitte korrigieren Sie mich, wenn ich falsch bin
Jede Hilfe wird dankbar sein
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein zusammengesetztes Prädikat:
Oder Sie kombinieren Sie einfach die tests, die mit "UND":
Beachten Sie, dass die Liste der Argumente des
predicateWithFormat
ist nichtnil
-beendet werden.Die Anzahl der Argumente ist bestimmt durch die Anzahl der Formatbezeichner in format
string.
Erste, man sollte es nicht wirklich nennen die
student - class
BezugstudentsToClass
. Der name der Beziehung widerspiegeln sollte, welche Art von Objekt ist am anderen Ende.E. g.
In diesem Fall die
Student
Bezug aufClass
genannt werden sollteclass
weil das Objekt es gibt einen einzigenClass
Einheit.Die inverse Beziehung sollte nicht aufgerufen werden
classToStudent
es aufgerufen werden sollstudents
weil das Objekt es ist einNSSet
mehrereStudents
.BEARBEITEN
Nur um diese. Der name der Beziehung sollte erklären, WARUM es da ist. Wir können sehen, dass der Bezug ist aus Klasse student, aber wenn Sie es nennen "classToStudent" es muss nicht alles erklären. Auch, was passiert, wenn du eine zweite relation aus der Klasse, um Schüler? Wie nennt man das. Wenn Sie es nennen
attendees
oderpupils
oderattendingStudents
etc.. es gibt die relation Bedeutung.LÖSUNG
In diesem Beispiel werde ich Ihnen nennen, wie ich Sie nennen würde, und Sie werden sehen, es macht es ein bisschen leichter zu verstehen...
Sowieso...
Zuerst, Ihre zitierte Prädikat ist eigentlich schon falsch. Sollten Sie auf das verwaltete Objekt, nicht sein Eigentum sind (also nicht die
name
desClass
). Es sollte sein:Auch, sollten Sie wirklich wählen mehr lesbare Namen für Ihre Variablen und Eigentum. Also, nicht
fmt2
aberformattingString
. NichtstudentsToClass
aberform
("Klasse" ist ein besonderes Wort in objective-C). Sie bekommen die Idee.So Ihre gewünschte zusammengesetzte Prädikat ist wie folgt (Kurzfassung):
Die komplizierte version, wenn Sie wirklich brauchen einer höheren Ebene der Abstraktion (was ich bezweifle):
Prädikate können auch verschachtelt werden, mit zusammengesetzte Prädikate (Für Swift)