这是我的代码:
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
答案 0 :(得分:4)
你有什么理由认为它应该是2?你清楚地在数组中有八个对象,其到期日期小于当前日期(你通过循环每次创建一个新对象,BTW)。
这些托管对象的DueDate
属性的值是什么类? (不要为此查看您的模型 - 发送截止日期值class
消息并使用NSLog
记录结果。)它们可能不是NSDates,而是{{1} } method,而不是在被要求与NSDate进行比较时抛出异常,而只是返回废话。
此外,为什么不将这个小于X日期的测试作为您用于获取这些对象的获取请求中的谓词?然后(在确定到期日期值为NSDates之后),您可以简单地使用数组的compare:
。当然,这假设你没有在你展示的代码之外用更大的结果数组做其他事情。