Ich möchte alle Datensätze für den aktuellen Monat abrufen, also staple ich zwei Prädikate für das erste Datum des Monats und den letzten Tag des Monats. Da ich CoreData verwende, werden die Daten tatsächlich als NSTimeInterval gespeichert.
%Vor%Beim Zurückgeben des gefilterten Arrays stürzt es mit dieser Fehlermeldung ab:
%Vor%Ich habe diese Schleife auch verwendet, um anzuzeigen, dass das recordDate tatsächlich innerhalb des Arrays existiert:
%Vor% Sie haben die Option "Skalare Eigenschaften für primitive Datentypen verwenden" gewählt
Erstellen der Unterklasse des verwalteten Objekts, sodass recordDate als dargestellt wird
NSTimeInterval
in der Klasse FTRecord
.
Aber in einem Prädikat wie "recordDate >= 123.45"
wird die linke Seite gespeichert
als NSKeyPathExpression
und verwendet valueForKeyPath:@"recordDate"
, um auf die Eigenschaft zuzugreifen, die ein NSDate
-Objekt zurückgibt.
Die rechte Seite dieses Prädikats wird als NSConstantValueExpression
gespeichert.
mit einem Verweis auf ein NSNumber
-Objekt.
Deshalb wird ein NSDate
mit einem NSNumber
verglichen, was genau zum
Ausnahme, die du hast.
Um das Problem zu beheben, müssen Sie die Eigenschaft mit einem NSDate
vergleichen
(was @ramaddy ursprünglich vorgeschlagen hat):
Ich habe das getestet und es scheint das erwartete Ergebnis zu produzieren.
Beachten Sie jedoch, dass Core Data timeIntervalSinceReferenceDate
und verwendet
dateWithTimeIntervalSinceReferenceDate
, um zwischen dem Skalar zu konvertieren
Werte und NSDate
, nicht timeIntervalSince1970
.
Tags und Links nspredicate ios nsdate unrecognized-selector