0

我从我的CoreData Entity,AveragedGroupedBy date结果中获取了一些值。查询效果很好。现在...我想知道dates这些结果的来源。显示的输出来自原始结果。我怎样才能让我的查询也吐出date/GroupBy value (given that my GroupBy criteria is date)从中获取这些平均值

输出

(
        {
        averageWeight = 36;
    },
        {
        averageWeight = 22;
    }
)

编码:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ExerciseData" inManagedObjectContext:context];
    [request setEntity:entity];

    // Specify that the request should return dictionaries.
    [request setResultType:NSDictionaryResultType];

    // Create an expression for the key path.
    NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"weight"];

    // Create an expression to represent the function you want to apply
    NSExpression *expression = [NSExpression expressionForFunction:@"average:"
                                                         arguments:@[keyPathExpression]];

    // Create an expression description using the minExpression and returning a date.
    NSExpressionDescription *expressionDescription = [[NSExpressionDescription alloc] init];

    // The name is the key that will be used in the dictionary for the return value.
    [expressionDescription setName:@"averageWeight"];
    [expressionDescription setExpression:expression];
    [expressionDescription setExpressionResultType:NSInteger32AttributeType]; // For example, NSDateAttributeType

    // Set the request's properties to fetch just the property represented by the expressions.
    [request setPropertiesToFetch:@[expressionDescription]];
    request.predicate = [NSPredicate predicateWithFormat:@"exercise == %@",exercise];
    [request setPropertiesToGroupBy:[NSArray arrayWithObject:@"date"]];
    // Execute the fetch.
    NSError *error;
    NSArray *objects = [context executeFetchRequest:request error:&error];
    NSLog(@"%@",objects);
4

1 回答 1

1

只需将“日期”添加为要获取的另一个属性:

[request setPropertiesToFetch:@[expressionDescription, @"date"]];
于 2013-07-25T09:40:29.590 回答