NSPredicate BETWEEN mit NSDate verursacht - [__ NSDate constantValue]: nicht erkannter Selektor, der an Instanz 0x1e7ff0 gesendet wurde

7

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?

    
mattvick 11.03.2011, 02:17
quelle

2 Antworten

5

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; =% @)"

Hier ist das vollständige Beispiel

    
zadam 04.04.2011, 01:44
quelle
24

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:

%Vor%     
Dave DeLong 11.03.2011 05:58
quelle

Tags und Links