Mit NSDate innerhalb einer NSPredicate
Gibt es eine bestimmte Art und Weise zu konfigurieren und eine NSPredicate zu vergleichen Termine?
Im wesentlichen habe ich ein Foto-Objekt, das hat ein NSDate, lastViewed.
Ich würde gerne so konfigurieren Sie eine NSPredicate, dass wieder alle Foto-Objekte, die angezeigt wurden, mehr Zeit als die eines bestimmten Zeitraums - in der Regel zwei Tage.
Ich bin Erlangung der Vergangenheit Datum, etwa so:
NSTimeInterval secondsPast = -172800;
NSDate * twoDaysPast = [NSDate dateWithTimeInterval:secondsPast sinceDate:[NSDate date]];
Und konfigurieren die NSPredicate folgendermassen:
request.predicate = [NSPredicate predicateWithFormat:@"lastViewed > %@", twoDaysPast];
Aber ich bekomme keine Ergebnisse zurück und ich bin mir nicht ganz sicher, warum.
Weiß ich, dass alle meine Foto-Objekte haben lastViewed set - es ist auf einen Standardwert festgelegt, der nun, wenn Sie das Foto Hinzugefügt, Core Data, also standardmäßig sollte ich sehen, dass jedes Foto erstellt als lastViewed werden neuere als meine twoDaysPast NSDate.
Kann ich direkt den Vergleich von zwei Instanzen von NSDate in dieser Art und Weise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass ist die richtige Art und Weise zu verwenden NSDates in NSPredicates. Wenn es nicht funktioniert, haben Sie versucht, entfernen das Prädikat zusammen und machen Sie sicher, dass der rest der Anforderung funktioniert? Vielleicht möchten Sie auch zu sanity-check-Ihr Prädikat durch NSLog ' Ing es vor dem ausführen der Abfrage.
Ich war erfolgreich mit dem
NSDate
Methode der KlassedateWithTimeIntervalSinceNow:
(und Sie tun können, dass alles in einer Zeile) wie folgt:Stellen Sie sicher, dass die
lastViewed
Objekte in CoreData sind eigentlichNSDate
Objekte und nicht strings.NSDate
Objekte können direkt miteinander verglichen werden mit derNSDate
Methodecompare:
. Daten basieren auf der Zeit, die seit ein typedef würde, Stichtag, so dass Sie ein Datum, um so größer oder kleiner als ein anderes Datum. Dies ist beschrieben hier.