Question

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

Pour une raison quelconque ce code ajoute 8 à l'icône du Dock quand il doit être de 2

Était-ce utile?

La solution

Pour quelles raisons vous ne demandez que ce devrait être 2? Vous avez clairement huit objets dans le tableau dont la date d'échéance est inférieure à la date actuelle (que vous créez un nouvel objet pour chaque passage dans la boucle, BTW).

Quelle est la classe des valeurs de ces objets gérés de la propriété de DueDate? (Ne regardez pas votre modèle de ce renverrons les valeurs date d'échéance des messages class et enregistrer les résultats en utilisant NSLog.) Il est possible qu'ils ne sont pas NSDates, et que leur méthode compare: est, au lieu de lancer une exception lorsqu'on leur demande de comparer à un NSDate, un non-sens simplement revenir.

Par ailleurs, pourquoi ne pas inclure c'est-moins-que-X-date d'essai comme le prédicat dans la demande d'extraction que vous utilisez pour obtenir ces objets? Ensuite (après s'être assuré que les valeurs de la date d'échéance sont NSDates), vous pouvez simplement utiliser le count du tableau. C'est en supposant que vous ne faites pas quelque chose d'autre avec le tableau de résultat plus grand en dehors du code que vous montriez, bien sûr.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top