如何按核心数据分组?

时间:2013-06-03 11:57:42

标签: ios macos core-data nsfetchedresultscontroller nsfetchrequest

我有一个名为deal的实体,而deal有一个名为date的属性,这是此交易对象插入商店的时间。

一天可能有几个deal

所以我想要按天计算一些数据组,我想要抓取daycountofsomething
像:

2013-06-03 3
2013-06-02 4

并且我不想使用sectionPath因为它只将交易放入部分。

我知道我可以通过另一个属性(类型:字符串)来完成此操作,例如dayOfTheDate,就像每个对象中的2013-06-03一样。

顺便说一下,瞬态属性在这种情况下似乎不起作用

你能理解我在找什么吗?

在这里评论所以我可以提供更多细节

谢谢你们所有人。

1 个答案:

答案 0 :(得分:4)

当我计算相同音符的数量

时,我是如何做到这一点的示例
NSEntityDescription* entity = [NSEntityDescription entityForName:@"Assets"
                                          inManagedObjectContext:[appDelegate managedObjectContext]];
NSAttributeDescription* statusDesc = [entity.attributesByName objectForKey:@"notes"];
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath: @"assetUrl"]; // Does not really matter
NSExpression *countExpression = [NSExpression expressionForFunction: @"count:"
                                                          arguments: [NSArray arrayWithObject:keyPathExpression]];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName: @"count"];
[expressionDescription setExpression: countExpression];
[expressionDescription setExpressionResultType: NSInteger32AttributeType];
[searchFetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:statusDesc,expressionDescription, nil]];
[searchFetchRequest setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:NO];
[searchFetchRequest setSortDescriptors:@[sortDescriptor]];
[searchFetchRequest setFetchLimit:10];
NSPredicate *query = [NSPredicate predicateWithFormat:@"notes contains[cd] %@",_txtCameraNote.text];
[searchFetchRequest setPredicate:query];
[searchFetchRequest setResultType:NSDictionaryResultType];
NSArray *fetchedObjects = [appContext executeFetchRequest:searchFetchRequest error:nil];

fetchedObjects会是这样的。

({
    count = 1;
    notes = "glenny and me";
},
{
    count = 6;
    notes = macair;
})