Objective-C的。从核心数据中获取不同的属性值

时间:2013-05-18 21:19:39

标签: objective-c core-data attributes entity

我遇到了一个我无法解决的问题。我有一个“数据库” - 读取核心数据 - 其中我有一个值和级别的属性。
类似的东西

价值--------等级
55 ------------- 4
33 ------------- 4
50 ------------- 5
70 ------------- 6
44 ------------- 5

我现在想要的是仅从级别5中提取所有值并将它们一起添加。我怎样才能实现这一点?我确实在apple dev网站上找到了“获取不同的值”,但这适用于从一个属性中提取所有值。

帮助表示感谢,谢谢。如果我错过了类似的话题,那么请给我一个链接。谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下获取请求:

// Fetch request for your entity:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Entity"];
[request setResultType:NSDictionaryResultType];

// Restrict result to "level == 5":
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"level == %d", 5];
[request setPredicate:predicate];

// Expression description for "@sum.value":
NSExpression *sumExpression = [NSExpression expressionForKeyPath:@"@sum.value"];
NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];
[expressionDescription setName:@"sumValue"];
[expressionDescription setExpression:sumExpression];
[expressionDescription setExpressionResultType:NSInteger32AttributeType];
[request setPropertiesToFetch:@[expressionDescription]];

NSArray *result = [context executeFetchRequest:request error:&error];

您的数据的结果是

(
    {
        sumValue = 94;
    }
)

即。包含一个字典的数组,其中包含level = 5的值之和。