1

这是我的代码:

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

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

4

1 回答 1

4

您基于什么理由声称它应该是 2?您显然在数组中有八个对象,其到期日期小于当前日期(BTW 为每次循环创建一个新对象)。

这些托管对象的DueDate属性值的类别是什么?(不要为此查看您的模型 - 发送到期日期值class消息并使用 记录结果NSLog。)它们可能不是 NSDates,并且他们的compare:方法是,而不是在被要求与NSDate,简直是胡说八道。

此外,为什么不将此 is-less-than-X-date 测试作为谓词包含在您用于获取这些对象的获取请求中?然后(在确保到期日期值是 NSDates 之后)您可以简单地使用count数组的。当然,这是假设您没有对显示的代码之外的较大结果数组做其他事情。

于 2009-12-12T05:52:01.770 回答