1

我是 Core Data 的新手,我正在尝试获取具有最大时间戳值的记录。在以下代码中,我得到了最大的 TimeStamp 值,但我希望该记录具有最大的时间戳值。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

NSManagedObjectContext *context = [appDelegate managedObjectContext];

NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"EnergyCumulative" inManagedObjectContext:context];


NSFetchRequest *fetchRequest = [[ NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
NSExpression *keyPathExpression = [NSExpression
                                   expressionForKeyPath:@"TimeStamp"];
NSExpression *ex = [NSExpression expressionForFunction:@"max:" 
                                             arguments:[NSArray arrayWithObject:keyPathExpression]];


NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"AvgReading"];
[expressionDescription setExpression:ex];
[expressionDescription setExpressionResultType:NSStringAttributeType];

[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:expressionDescription]];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setEntity:entity];


NSError *error;  

NSArray *tripArray = [context executeFetchRequest:fetchRequest error:&error];
 NSLog(@"%@",tripArray);  

在 NSLog 我得到( { AvgReading = 1342704600000; } )

前任。我有实体EnergyCumulative,因为我有属性Reading & TimeStamp,所以我想要具有最大时间戳的读数

4

1 回答 1

0

你的类型是TimeStamp什么?

更改类型

[expressionDescription setExpressionResultType:NSStringAttributeType];

如果NSDateAttributeType它是 Date 类型,或者NSDecimalAttributeType它是 Number。

顺便说一句,你已经写[fetchRequest setEntity:entity];了两次了……(嗯,没什么大不了的)


编辑:

您可以使用

[[tripArray objectAtIndex:0] valueForKey:@"AvgReading"];

得到你的最大时间戳。(我认为'@AvgReading' 不是一个好名字,虽然它很好用)

(您可以使用 Use NSStringAttributeType?? 获得最大时间戳)

于 2012-07-20T05:34:30.267 回答