我需要从coredata获取最新日期
我找到了一个方法
NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[fetchRequest setFetchLimit:1];
Run Code Online (Sandbox Code Playgroud)
所以按日期排序然后选择第一个
但是这不能做得更好吗?这种方法看起来像是一种蛮力
sort是nlogn,但是对max的简单搜索是n
您实际上可以向SQL询问该值,而不是具有该值的对象:
NSExpression *date = [NSExpression expressionForKeyPath:@"date"];
NSExpression *maxDate = [NSExpression expressionForFunction:@"max:"
arguments:[NSArray arrayWithObject:maxDate]];
NSExpressionDescription *d = [[[NSExpressionDescription alloc] init] autorelease];
[d setName:@"maxDate"];
[d setExpression:maxSalaryExpression];
[d setExpressionResultType:NSDateAttributeType];
[request setPropertiesToFetch:[NSArray arrayWithObject:d]];
NSError *error = nil;
NSArray *objects = [managedObjectContext executeFetchRequest:request error:&error];
if (objects == nil) {
// Handle the error.
} else {
if (0 < [objects count]) {
NSLog(@"Maximum date: %@", [[objects objectAtIndex:0] valueForKey:@"maxDate"]);
}
}
Run Code Online (Sandbox Code Playgroud)
在CoreData文档中获取托管对象 - > 获取特定值下将对此进行更详细的描述.
归档时间: |
|
查看次数: |
1726 次 |
最近记录: |