L'aggiunta di un numero per l'icona del dock
-
19-09-2019 - |
Domanda
Qui è il mio codice:
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]];
Per qualche motivo questo codice è l'aggiunta di 8 per l'icona del dock quando dovrebbe essere 2
Soluzione
Per quale motivo non si sostiene che dovrebbe essere 2? Hai chiaramente otto oggetti nella matrice la cui data di scadenza è inferiore alla data corrente (che si crea un nuovo oggetto per ogni volta attraverso il ciclo, BTW).
Qual è la classe dei valori di proprietà DueDate
questi oggetti gestiti? (Non guardare il vostro modello per questo-inviare i messaggi a causa valori di data class
e registrare i risultati utilizzando NSLog
.) E 'possibile che siano non NSDates, e che il loro metodo compare:
è, invece di lanciare un'eccezione quando viene chiesto di confrontare ad un NSDate, sciocchezze semplicemente tornando.
Inoltre, perché non includere questo test è-meno-che-X-date come il predicato nella richiesta di recupero che si sta utilizzando per ottenere questi oggetti? Poi (dopo essersi assicurati i valori data di scadenza sono NSDates) si può semplicemente utilizzare il count
della matrice. Questo è supponendo che non si sta facendo qualcosa di diverso con la più grande gamma risultato al di fuori del codice che avete mostrato, naturalmente.