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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top