【问题标题】:How to add multiple attribute in Group by in core data如何在核心数据的 Group by 中添加多个属性
【发布时间】:2013-04-20 19:08:55
【问题描述】:

我的要求通过核心数据从表格中获取姓名、电子邮件、手机号码、金额(金额)。

如果我选择 sql,那么我的 sql 查询如下所示:

  select name,eMail,mobileNo,sum(amount)  amt1 from T1 GROUP BY name,eMail,mobileNo;

这里我得到了正确的结果。

我对核心数据也是如此。

我可以通过提供 GROUP BY name 来获取 name 和 SUM(amount)。我为此提供了以下代码。

[请求 setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];

我不知道如何在核心数据的 Group by 中添加多个属性。谁能帮我做这件事。

 NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Entity1" inManagedObjectContext:context];

 NSAttributeDescription* statusDesc = [entityDesc.attributesByName objectForKey:@"name"];


NSExpression *sumExpression = [NSExpression expressionForFunction:@"sum:" arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:@"totalAmount"]]];

NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc]init];
[expressionDescription setName: @"sumTot"];
[expressionDescription setExpression: sumExpression];
[expressionDescription setExpressionResultType:NSDecimalAttributeType];


NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDesc];

[request setPropertiesToFetch:[NSArray arrayWithObjects:@"name",expressionDescription, nil]];
[request setPropertiesToGroupBy:[NSArray arrayWithObject:statusDesc]];
[request setResultType:NSDictionaryResultType];

NSError *error = nil;
myArray = [context executeFetchRequest:request error:&error];

【问题讨论】:

  • 你为什么不尝试一个包含多个对象的数组?就像你对setPropertiesToFetch 所做的那样?

标签: ios5 core-data ios6 sqlite


【解决方案1】:

感谢您为解决方案提供指导。

我找到了解决方案。 arrayWithObject 和 arrayWithObjects

之间是一个愚蠢的错误
 NSAttributeDescription* statusDesc = [entityDesc.attributesByName objectForKey:@"name"];
 NSAttributeDescription* statusDesc1 = [entityDesc.attributesByName objectForKey:@"eMail"];
 NSAttributeDescription* statusDesc2 = [entityDesc.attributesByName objectForKey:@"mobileNo"];

之后我通过了所有这样的描述。

[request setPropertiesToGroupBy:[NSArray arrayWithObjects :statusDesc,statusDesc1, statusDesc2, nil]];

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多