Frage

Hier ist mein Code:

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]];

Aus irgendeinem Grund dieser Code 8 auf das Dock-Symbol ist das Hinzufügen, wenn es sein sollte 2

War es hilfreich?

Lösung

Aus welchen Gründen behaupten Sie, dass es 2 sein sollte? Sie haben eindeutig acht Objekte in dem Array, dessen Fälligkeitsdatum kleiner als das aktuelle Datum (die Sie für jedes Mal durch die Schleife ein neues Objekt erstellen, BTW).

Was ist die Klasse der Werte dieser DueDate Eigenschaft verwalteten Objekte? (Sie nicht auf Ihr Modell sucht die Fälligkeit Werte class messages-senden und melden die Ergebnisse NSLog verwenden.) Es ist möglich, dass sie nicht NSDates sind, und dass ihre compare: Methode ist, anstatt eine Ausnahme zu werfen, wenn Sie gefragt werden, um vergleichen zu einem NSDate, einfach Rückkehr Unsinn.

Außerdem, warum nicht um diesen ist-weniger-als-X-date-Test als Prädikat in der Anfrage holen Sie diese Objekte zu erhalten verwenden? Dann (nach sicherstellen, dass die Fälligkeit Werte sind NSDates), könnten Sie einfach die count des Arrays verwenden. Das ist vorausgesetzt, Sie sind nicht außerhalb des Codes etwas anderes mit dem größeren Ergebnisarray tun Sie zeigte, natürlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top