NSFetchRequest Group是多对多关系的属性

时间:2015-09-01 10:17:09

标签: ios core-data nsfetchrequest

enter image description here

我一直坚持核心数据中的一些记录。  记录有很多关系。 通过多对关系搜索持久数据似乎很简单,我使用" SUBQUERY"实现它。我正面临分组记录的问题。

我需要分组" ZCMORecord" by stringValue of" ZCMORecordValue"

自" ZCMORecordValue"是一种多对多的关系。

我甚至需要将ZCMORecords与一个或多个" ZCMORecordValue"分组。

NSManagedObjectContext *context= [[[UIApplication sharedApplication]delegate ]managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *valueDesc = [NSEntityDescription entityForName:@"ZCMORecord" inManagedObjectContext:context];    

[fetchRequest setResultType:NSDictionaryResultType];
[fetchRequest setFetchLimit:PAGE_SIZE];

NSPropertyDescription *recordRelationShip = [fetchRequest.entity.relationshipsByName objectForKey:@"recordValueSet.stringValue"];

[fetchRequest setPropertiesToGroupBy:[NSArray arrayWithObjects:recordRelationShip,nil]];
NSError *error;
id fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

尝试此操作时出错。

  

具有GROUP BY组件的查询中的SELECT子句只能包含   在GROUP BY或聚合函数中命名的属性

我需要在组中获取记录。 我无法弄清楚要设置什么?setPropertiesToGroupBy:"和" setHavingPredicate:"取得适当的成果。

OKAY !!我如何存储数据的示例

ZCMORecordValues


id    stringValue<NSString>  dateValue<NSDate>     record


name     Alex                     -            record1<ZCMORecord>

DOB      -                     10/10/1990      record1<ZCMORecord>

name     Anto                     -            record2<ZCMORecord>

DOB      -                     05/05/1990      record2<ZCMORecord>

name     Max                     -            record3<ZCMORecord>

DOB      -                     10/10/1990      record3<ZCMORecord>

name     Mary                     -            record4<ZCMORecord>

DOB      -                     01/01/1990      record4<ZCMORecord>

现在我想将我的&#34; ZCMORecord&#34;关于DOB。

欢迎任何关于更改模型以便于分组的建议

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用NSFetchedResultsController,获取记录值并将stringValue作为sectionNameKeyPath传递。