Ihr Prädikat scheint in Ordnung zu sein.
Der Grund, warum Sie Null-Ergebnis finden, zurückgegeben werden, kann jedoch sein, dass die Daten nicht vollständig identisch sind.
Zum Beispiel:
05/04/2012 13:37:00
nicht mit 05/04/2012 13:37:01
übereinstimmen, da diese beiden Werte nicht genau das gleiche.
Möchten Sie das Datum (Tag, Monat, Jahr) sowie die Uhrzeit überprüfen?
Wenn Sie nur das Datum überprüfen möchten, sollten Sie ein Startdatum und ein Enddatum erstellen und diese mit dem vom Benutzer ausgewählten Datum als Bezugssystem vergleichen.
Ähnliches sollte ein Datum und eine Uhrzeit für 00:00:00 erstellen.
//gather current calendar
NSCalendar *calendar = [NSCalendar currentCalendar];
//gather date components from date
NSDateComponents *dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
//set date components
[dateComponents setHour:0];
[dateComponents setMinute:0];
[dateComponents setSecond:0];
//return date relative from date
return [calendar dateFromComponents:dateComponents];
ein anderes Datum erstellen, indem Sie die Stunden, Minuten und Sekunden bis 23.59.59 einstellen und überprüfen, ob Ihre Benutzer gewähltes Datum zwischen diesen Bereichen fällt.
[NSPredicate predicateWithFormat:@"date BETWEEN %@", [NSArray arrayWithObjects:startOfDay, endOfDay, nil]]
Es funktioniert, danke. Ich bekam einen Fehler, indem ich das Array im Prädikat verwendete, aber das funktionierte ..... @ "eDate>% @ UND eDate <% @", date1, date2] Nochmals vielen Dank. – user2228755
Warum fügen Sie 'NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit 'in' Komponenten: fromDate: 'nur um es wegzuwerfen? – vikingosegundo
Mein schlechtes. Dies war Code, den ich aus einem Projekt eingefügt habe, das diese Komponenten tatsächlich verwendet. Ich habe es versäumt, sie für die Zwecke dieses Beitrags zu entfernen. Ich werde das jetzt ändern;] Danke, dass du es aufgezeigt hast! – CaptainRedmuff