Adicionando um número para o ícone de encaixe
-
19-09-2019 - |
Pergunta
Aqui está o meu código:
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]];
Por alguma razão este código está adicionando 8 ao ícone de encaixe, quando deveria ser 2
Solução
Em que bases você afirmam que ele deve ser 2? Você tem claramente oito objetos na matriz cuja data de vencimento é inferior a data atual (que você criar um novo objeto para cada iteração do loop, BTW).
O que é a classe dos valores da propriedade DueDate
estes gerenciados objetos? (Não olhe para o seu modelo para este-enviar a data de vencimento valores class
mensagens e registrar os resultados usando NSLog
.) É possível que eles não são NSDates, e que o seu método compare:
é, em vez de lançar uma exceção quando solicitado a comparar a um NSDate, absurdo simplesmente retornar.
Além disso, por que não incluir este teste é-menos-que-X-data que o predicado no pedido buscar você está usando para obter esses objetos? Em seguida (depois de ter certeza que os valores de data de vencimento são NSDates), você pode simplesmente usar o count
da matriz. Isso supondo que você não está fazendo outra coisa com o maior resultado da matriz fora do código que você mostrou, é claro.