Datos Básicos - formato NSPredicate con rango de tiempo (NSTimeInterval)
Pregunta
Estoy tratando de encontrar la manera de pasar por mi información CoreData y encontrar objetos que tienen una createdAt (parte de mi objeto como un NSDate) que está dentro de un NSTimeInterval. ¿Cómo fijo esto?
He mirado en la documentación en: http://developer.apple.com/documentation/Cocoa/Conceptual/ predicados / predicates.html
Pero no voy a encontrar nada allí.
¿Es necesario crear dos marcas de tiempo y utilizar SQL de ENTRE?
Cualquier ayuda sería maravilloso.
Solución
En primer lugar, no tiene sentido para comprobar si un NSDate está dentro de un NSTimeInterval, porque NSTimeInterval simplemente especifica un período de tiempo, no su ubicación. En su lugar, desea utilizar dos NSDates separada especificando el comienzo y el final de sus intervalos.
Esto es lo que se vería así (beginningTime y endTime son NSDates).
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];