Ich versuche, aus Core Data-Datensätzen, die eine startTime zwischen zwei Daten haben, zu holen.
Hier ist mein Code:
%Vor%Und hier ist die Konsolenausgabe:
%Vor%Ich habe auch das Prädikat unten versucht, das & gt; = AND & lt; = anstelle der BETWEEN-Anweisung verwendet (siehe unten). Dies verursacht keinen Fehler, aber auch keine Datensätze!
%Vor%Als Test habe ich ein Prädikat ausprobiert, das NSDate-Objekte nicht enthält und es funktioniert gut (siehe unten):
%Vor%Jede Hilfe oder Beratung wäre sehr willkommen.
Vielen Dank, Matthew
Bearbeiten
Danke für deine Hilfe Dave.
Also jetzt benutze ich das <=
Konstrukt, aber ich bekomme 0 Objekte abgerufen.
Ich habe nur today
und distantFuture
als Test verwendet, um absolut sicher zu gehen, dass meine startTime zwischen diesen Daten liegen würde. Im realen Code ist es ein Bereich von fromDate
bis toDate
.
Hier ist mein NSPredikat:
%Vor%Hier ist die Konsolenausgabe:
%Vor%Hier sind die Daten in Core Data (der Attributtyp ist auf Date gesetzt):
%Vor%Ich habe keine Ahnung, warum 0 Objekte zurückgegeben werden. Kann jemand sehen, wo ich falsch liege?
Vielleicht versuchen Sie AND anstelle von & amp; & amp; (Obwohl Ihre Konsolenausgabe die korrekte Konvertierung zu zeigen scheint.
Ich habe gerade ein Beispiel gepostet, das für mich funktioniert. Beachten Sie, dass mein Zustand wie folgt umgedreht ist:
@ "(% K & gt; =% @) UND (% K & lt; =% @)"
Laut die Dokumentation , der Operator BETWEEN
zählt als Aggregatausdruck und ...
Aggregierte Ausdrücke werden von Core Data nicht unterstützt.
Also, um das zu umgehen, müssen Sie die >=
und <=
Konstruktion verwenden.
Da jedoch eines Ihrer Daten [NSDate distantFuture]
ist, brauchen Sie den Vergleich "weniger als" überhaupt nicht. Sie sollten tun können:
Tags und Links nspredicate core-data nsdate