获取按Coredata中的属性分组的实体的最大日期元素

时间:2014-04-11 09:38:16

标签: ios core-data nsfetchedresultscontroller

我正在使用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];

谢谢。

0 个答案:

没有答案