Pregunta

Aquí está mi código:

for (NSManagedObject *object in array) {
    if ([[object valueForKey:@"DueDate"] isLessThan:[NSDate date]]) {
        count++;
        NSLog(@"Looped");
        NSString *test = [[NSString alloc] initWithFormat:@"%@", [object valueForKey:@"DueDate"]];
        NSLog(@"%@", test);
    }
}
NSLog(@"%i", count);
NSDockTile *aTitle = [[NSApplication sharedApplication] dockTile];
[aTitle setBadgeLabel:[NSString stringWithFormat:@"%i", count]];

Por alguna razón, este código es la adición de 8 al icono del Dock, cuando debería ser 2

¿Fue útil?

Solución

¿Por qué motivos reclamas que debería ser de 2? Usted tiene claramente ocho objetos de la matriz cuya fecha de vencimiento es inferior a la fecha actual (que se crea un nuevo objeto para cada iteración del bucle, por cierto).

¿Cuál es la clase de los valores de la propiedad DueDate estos objetos administrados? (No mire a su modelo de este a enviar los mensajes de valores class fecha de vencimiento y registrar los resultados usando NSLog.) Es posible que no están NSDates, y que su método es compare:, en lugar de lanzar una excepción cuando se le preguntó a comparar a un NSDate, sin sentido simple devolución.

Por otra parte, ¿por qué no incluir esta prueba es-menos-que-X-fecha que el predicado en la solicitud de búsqueda que está utilizando para obtener estos objetos? A continuación (después de asegurarse de que los valores de fechas de vencimiento son NSDates) simplemente podría utilizar el count de la matriz. Eso es asumiendo que no están haciendo otra cosa con la matriz de resultados mayor fuera del código que mostró, por supuesto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top