我正在使用以下内容获得输出:
2013-06-06 11:44:27.325 [2570:907] Rating: 0
2013-06-06 11:44:27.326 [2570:907] Rating: 2
2013-06-06 11:44:27.327 [2570:907] Rating: 3
[rateQuery findObjectsInBackgroundWithBlock:^(NSArray *rateObjects, NSError *error)
{
if( !error )
{
NSLog(@"rateobject %@", rateObjects);
for (id item in rateObjects) {
int ratingVal = [[item objectForKey:@"Rating"] intValue];
NSLog(@"Rating: %d", ratingVal);
}
}
}
];
我希望添加数字以获得总数,然后除以计数以获得平均“评级”。
我试过这个,但显然语法不正确。我想我需要使用NSArray而不是“item”:
NSNumber *sum=[[item objectForKey:@"Rating"] valueForKeyPath:@"@sum.floatValue"];
NSLog(@"Rating Sum: %@", sum);
感谢您的帮助。
答案 0 :(得分:12)
您可以使用KVC获得平均值。一个例子
NSArray *objects = @[
@{ @"Rating": @4 },
@{ @"Rating": @6 },
@{ @"Rating": @10 }
];
NSLog(@"Average: %@", [objects valueForKeyPath:@"@avg.Rating"]);
// results in "Average: 6.666666"
所以在你的情况下使用:
NSNumber *sum = [rateObjects valueForKeyPath:@"@sum.Rating"];
NSNumber *average = [rateObjects valueForKeyPath:@"@avg.Rating"];
答案 1 :(得分:3)
试试这个:
__block float sum = 0;
[rateQuery findObjectsInBackgroundWithBlock:^(NSArray *rateObjects, NSError *error) {
if( !error ) {
NSLog(@"rateobject %@", rateObjects);
for (id item in rateObjects) {
sum = sum + [[item objectForKey:@"Rating"] intValue];
int ratingVal = [[item objectForKey:@"Rating"] intValue];
NSLog(@"Rating: %d", ratingVal);
}
NSLog(@"Sum: %f", sum);
NSLog(@"Average: %f", sum/rateObjects.count);
}
}];
答案 2 :(得分:3)
试试这个:
NSNumber *sum = [rateObjects valueForKeyPath:@"@sum.Rating"];