我正在使用Core Data
开发一个应用程序,我是初学者。
好吧,我有一个entity
:name,date,cityId等等..我需要在collection
属性中获取fetchedResultsController
,每个属性的Max.date元素city(按cityId分组)并按日期排序。
我不知道如何在这种查询中使用Predicates。如何通过某些属性获取Max.date和group?我知道NSPredicate,但我不知道如何解决这个问题。
我正在尝试使用此代码:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kEntityImage inManagedObjectContext:mainContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:NO];
NSArray *sortDescriptors = @[sortDescriptor];
NSExpression *date = [NSExpression expressionForKeyPath:@"date"];
NSExpression *maxDate = [NSExpression expressionForFunction:@"max:"
arguments:[NSArray arrayWithObject:date]];
NSExpressionDescription *d = [[NSExpressionDescription alloc] init];
[d setName:@"maxDate"];
[d setExpression:maxDate];
[d setExpressionResultType:NSDateAttributeType];
NSAttributeDescription* cityId = [entity.attributesByName objectForKey:@"city.cityId"];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:d]];
[fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObject:cityId]];
[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setSortDescriptors:sortDescriptors];
谢谢。