Core Data - NSPredicate Format mit Zeitbereich (NSTimeInterval)
Frage
Ich versuche, herauszufinden, wie man meine Coredata Informationen zu durchlaufen und finden Sie Objekte, die eine createdAt (Teil meiner Aufgabe als NSDate) haben, die innerhalb eines NSTimeInterval ist. Wie kann ich diese auf?
Ich habe auf der Dokumentation sieht: http://developer.apple.com/documentation/Cocoa/Conceptual/ Prädikate / predicates.html
Aber ich finde nichts da.
Benötige ich zwei Zeitmarken zu erstellen und verwenden SQL ist eine Sache zwischen?
Jede Hilfe wäre wunderbar.
Lösung
Zunächst einmal ist es nicht sinnvoll, zu prüfen, ob ein NSDate innerhalb eines NSTimeInterval ist, weil NSTimeInterval gibt nur eine Länge von Zeit, nicht die Lage. Stattdessen möchten Sie zwei separate NSDates verwenden, um den Anfang und das Ende Ihrer Intervalle angeben.
Hier ist, wie es ist (beginningTime und endTime sind NSDates) aussehen würde.
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"YourEntityName" inManagedObjectContext:yourContext];
NSPredicate *beginningPredicate = [NSPredicate predicateWithFormat:@"createdAt >= %@", beginningTime];
NSPredicate *endPredicate = [NSPredicate predicateWithFormat:@"createdAt <= %@", endTime];
request.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:beginningPredicate, endPredicate, nil]];
NSArray *results = [yourContext executeFetchRequest:request error:NULL];