2013-07-25 58 views
0

我已經從我的CoreData Entity,AveragedGroupedBydate取得了一些數值結果。查詢的效果很好。現在...我想知道這些結果來自哪個dates。顯示的輸出來自原始結果。我如何才能讓我的查詢還吐出date/GroupBy value(given that my GroupBy criteria is date)從那些從如何獲得從CoreData中取平均數的實體屬性

輸出取平均值

(
     { 
     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); 

回答

1

只需添加「日期」作爲取回的另一個屬性:

[request setPropertiesToFetch:@[expressionDescription, @"date"]];