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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top