【问题标题】:how to group by day with core data?如何用核心数据按天分组?
【发布时间】:2013-05-29 13:42:16
【问题描述】:

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

一天可能有几个deals。

所以我想按天计算一些数据组,我想获取daycountofsomething
喜欢:

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

我不想使用sectionPath,因为它只将交易放在部分中。

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

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

你能明白我在找什么吗?

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

谢谢大家。

【问题讨论】:

标签: ios macos core-data nsfetchedresultscontroller nsfetchrequest


【解决方案1】:

当我计算相同音符的数量时我是如何做到的示例

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;
})

【讨论】:

  • 哦,我差点忘了这个问题。我之前自己解决过几次。不过还是谢谢你的回答!
  • @AlexanderLongbeach 我现在的工作解决方案是 NSFetchRequestNSPredicate(date>=2013.12.17 00:00 AND date NSCountResultType。也许对你不好。
猜你喜欢
  • 1970-01-01
  • 2015-02-13
  • 2017-07-20
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多