tres hoy horas fechas fecha dias comparar ios objective-c core-data nspredicate magicalrecord

ios - hoy - compare dos fechas string en javascript



No se puede usar un predicado que compare fechas en Magical Record (2)

Estoy creando un método que eliminará todos mis NSManagedObjects que no se actualizaron en la última sincronización.

- (void)removeStaleObjects { // Delete objects that have not been updated in this sync. NSPredicate *stalePredicate = [NSPredicate predicateWithFormat:@"updated < %@", self.syncStart]; NSArray *staleObjects = [Node MR_findAllWithPredicate:stalePredicate]; for (Node *n in staleObjects) { [[NSManagedObjectContext MR_defaultContext] deleteObject:n]; } }

El código sigue fallando en la línea MR_findAll ... con

[__NSDate objCType]: unrecognized selector sent to instance

Revisé mi sintaxis con la documentación de Apple y estoy 99% seguro de que estoy creando el predicado correctamente, startDate es solo

_startDate = [NSDate date];

que se ejecuta antes de mi sincronización. luego de mi sincronización llamo

[self removeStaleObjects];

¿Alguien sabe dónde estoy arruinando?

Actualización : Pude hacerlo funcionar almacenando el tiempo de actualización como un doble. Sin embargo, todavía estoy interesado en hacer que funcione con NSDates, así que si alguien encuentra algo, publíquelo aquí.


También me parece que tu predicado está formateado correctamente. Aquí hay un par de cosas que puede hacer:

1) Al depurar esto, imprime ese predicado. Deberías ver algo como:

updatedDate < {some integer value}

Las fechas se almacenan como enteros debajo de las cubiertas, y un predicado también las convierte correctamente. Si su predicado no se puede imprimir en el depurador, sabrá de inmediato

2) Verifique su tipo de fecha actualizada . Asegúrate de que sea una fecha (confío que ya es una fecha, pero no has especificado en tu pregunta)

3) Asegúrese de que su objeto Node tenga el atributo updatedDate en él.