0

Roundsゴルフラウンドに関する基本的なデータを持つエンティティがあります。ラウンド数と平均スコアを計算しようとしています。ただし、これらの値を計算しようとするたびに、0 (ゼロ) が返されます。エラーもクラッシュもありません。

私は次の機能を持っていますRounds.m:

+(NSNumber *)aggregateOperation:(NSString *)function onAttribute:(NSString *)attributeName withPredicate:(NSPredicate *)predicate inManagedObjectContext:(NSManagedObjectContext *)context
{
    NSExpression *ex = [NSExpression expressionForFunction:function
                                 arguments:[NSArray arrayWithObject:[NSExpression expressionForKeyPath:attributeName]]];

    NSExpressionDescription *ed = [[NSExpressionDescription alloc] init];
    [ed setName:@"result"];
    [ed setExpression:ex];
    [ed setExpressionResultType:NSInteger64AttributeType];

    NSArray *properties = [NSArray arrayWithObject:ed];

    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    [request setPropertiesToFetch:properties];
    [request setResultType:NSDictionaryResultType];

    if (predicate != nil)
        [request setPredicate:predicate];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Rounds"
                              inManagedObjectContext:context];
    [request setEntity:entity];

    NSArray *results = [context executeFetchRequest:request error:nil];
    NSDictionary *resultsDictionary = [results objectAtIndex:0];
    NSNumber *resultValue = [resultsDictionary objectForKey:@"result"];
    return resultValue;
}

次に、View Controller からこのメソッドを呼び出して、ラウンド数とスコア平均のラベルの値を設定します。

-(NSNumber*) scoringAverageCalc
{
    NSNumber *scoreAverage = [Rounds aggregateOperation:@"average:" onAttribute:@"roundScore" withPredicate:nil inManagedObjectContext:_managedObjectContext];
    return scoreAverage;
}

-(NSNumber*)countOfRounds
{
    NSNumber *roundCount = [Rounds aggregateOperation:@"count:" onAttribute:@"roundDate" withPredicate:nil inManagedObjectContext:_managedObjectContext];
    return roundCount;
}

正しい値が得られない理由を教えてください。

4

2 に答える 2

0

あなたのコードは私のために働きます。エンティティまたは属性の名前にスペルミスがないことを確認しますか?

于 2013-08-26T00:28:29.130 に答える