2016-03-20 9 views
1

Ich bin ziemlich neu in ios Dev, also könnte dies offensichtlich sein.Swift Core Data Fetch Ergebnisse von einem bestimmten Datum

Mit Core Data habe ich eine Entität: 'Post' mit einem Attribut für 'dateAdded'.

Wenn der Benutzer ein NSDate in einem Kalender auswählt, möchte ich nur alle Einträge an diesem Tag abrufen und diese in eine Tabelle laden.

Ich habe überlegt, ein Prädikat zu verwenden, bei dem dateAdded (NSDate) gleich dem calendarSelectedNSDate wäre. Aber ich denke nicht, dass das funktionieren würde, da ihre NSDates aufgrund unterschiedlicher Zeiten anders sein würden.

Ich würde wirklich eine Lösung zu schätzen wissen! Vielen Dank!

+0

Sie denken, sind in der richtigen Richtung. Sie müssen das Datumsformat unverändert lassen. Wenn Sie also das Datum in coreData speichern, kennen Sie das Format oder Sie ändern das Format entsprechend. Wenn der Benutzer das Datum auswählt, konvertieren Sie das Datum zuerst in das gewünschte Format und verwenden Sie Ihr Prädikat. –

Antwort

2

Verwenden NSCalendar den Beginn und das Ende des gewählten Datums zu berechnen und ein Prädikat erstellen:

// get the current calendar 
let calendar = NSCalendar.currentCalendar() 
// get the start of the day of the selected date 
let startDate = calendar.startOfDayForDate(calendarSelectedNSDate) 
// get the start of the day after the selected date 
let endDate = calendar.dateByAddingUnit(.Day, value: 1, toDate: startDate, options: NSCalendarOptions())! 
// create a predicate to filter between start date and end date 
let predicate = NSPredicate(format: "dateAdded >= %@ AND dateAdded < %@", startDate, endDate)