Hinzufügen einer Nummer an den Dock-Symbol
-
19-09-2019 - |
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
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.