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.

¿Fue útil?

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];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top