在停靠栏图标上添加一个数字

时间:2009-12-12 05:12:30

标签: objective-c cocoa badge nsdocktile

这是我的代码:

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

出于某种原因,此代码在停靠栏图标上添加8时应为2

1 个答案:

答案 0 :(得分:4)

你有什么理由认为它应该是2?你清楚地在数组中有八个对象,其到期日期小于当前日期(你通过循环每次创建一个新对象,BTW)。

这些托管对象的DueDate属性的值是什么类? (不要为此查看您的模型 - 发送截止日期值class消息并使用NSLog记录结果。)它们可能不是NSDates,而是{{1} } method,而不是在被要求与NSDate进行比较时抛出异常,而只是返回废话。

此外,为什么不将这个小于X日期的测试作为您用于获取这些对象的获取请求中的谓词?然后(在确定到期日期值为NSDates之后),您可以简单地使用数组的compare:。当然,这假设你没有在你展示的代码之外用更大的结果数组做其他事情。