我将类别和金额值存储到核心数据。我想向用户显示前5个类别。我能够得到结果但是如何对类似类别的金额求和并显示前5个。?< / p>
我已经尝试了一些逻辑来总结该类别的金额,但我被困在那里,我也想知道我是否做得对。
NSArray *results = [moc executeFetchRequest:request error:&error];
for(int i = 0; i < [results count] ; i ++){
double sum = 0;
NSString *temp = [[results objectAtIndex:i]valueForKey:@"category"];
for( int j = 0; j< [results count] ; j ++){
if([temp isEqualToString:[[results objectAtIndex:j]valueForKey:@"category"]]){
sum = sum + [[[results objectAtIndex:j]valueForKey:@"amount"]doubleValue];
}
}
NSLog(@"%f",sum);
NSLog(@"%f",temp);
}
}
答案 0 :(得分:0)
你想要的是一个计数集。继承文件:https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSCountedSet_Class/Reference/Reference.html
基本上,你只需输入你拥有的所有物品,然后再询问一个物体的数量。计数的集合将返回特定项目在集合中的次数。只需确保使用-countForObject
而不是-count
。
玩得开心
答案 1 :(得分:0)
您可以通过升序或降序将结果总和存储到数组中。从该数组中,您可以显示其指数中的前5个总和。
比你
答案 2 :(得分:0)
当您从核心数据中获取值时,您可以使用
验证重复值NSPredicate *predicate = [NSPredicate predicateWithFormat:@"amount=%d",previousValueotNot];
然后在下面添加此代码
[request setPredicate:predicate];
NSError *error;
NSArray *tempResults = [context executeFetchRequest:request error:&error];
NSLog(@"temparray coun is %d",[tempResults count]);
if ([tempResults count] > 0)
{
//sum here the duplicates.
//sample code is
NSArray *tempResults = [self.managedObjectContext executeFetchRequest:request error:&error];
NSMutableArray *tempBudsArray = [[NSMutableArray alloc] init];
for ( Favorite *fav in tempResults)
{
//.. Here u get the values from the core data and sum here ,then store all the values, later u can put in ascending order
}
}