使用CoreData获取最大值

时间:2012-02-09 23:30:05

标签: objective-c cocoa-touch core-data

这是我第一次尝试使用CoreData,而我在从表中获取最大日期时遇到了一些麻烦。

这基本上就是我要做的事情:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Radar" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];

NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"modifiedOn"];
NSExpression *maxDate = [NSExpression expressionForFunction:@"max:" arguments:[NSArray arrayWithObject:keyPathExpression]];

NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"maxDate"];
[expressionDescription setExpression:maxDate];
[expressionDescription setExpressionResultType:NSDateAttributeType];

[request setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];

NSError *error = nil;
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
    // Handle the error.
}
else {
    if ([objects count] > 0) {
        NSLog(@"%d", [objects count]);
        NSLog(@"MAx date: %@", [[objects objectAtIndex:0] valueForKey:@"modifiedOn"]);
    }
}

此代码以某种方式与我想要的相反,并打印最小日期。因为我刚刚开始使用CoreData,很明显我出错了,但是什么?

1 个答案:

答案 0 :(得分:0)

也许你应该尝试NSLog [对象lastObject],而不是第一个?