在我的ios项目中,我使用两个实体(CoreData):人和礼物与许多关系。
我知道如何计算送给一个人的礼物的总和:
NSDecimalNumber *orderSum=[person.gifts valueForKeyPath:@"@sum.priceOfGift"];但是我如何计算所有人的总和呢?
-(NSFetchedResultsController *) fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
//NSError *error = nil;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person"
inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"nameOfPerson"
ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
_fetchedResultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"nameOfGroup" cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;}
发布于 2012-12-20 10:34:25
“所有的人的总和”就是把所有的人都叫出来数一数。
int sum = fetchedObjects.count;但也许你指的是“所有人所有礼物的价格之和”。想想看,这和所有礼物的价格之和是一样的。因此,您只需取下礼物并计算。
NSNumber *sum = [self.fetchedResultsController.fetchedObjects
valueForKeyPath:@"@sum.priceOfGift"];发布于 2012-12-19 21:50:16
您可以尝试获取所有的人员,然后使用和
NSError *error = nil;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:managedObjectContext];
request.predicate = nil;
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"index" ascending:YES]];//some parameter
NSArray *persons = [managedObjectContext executeFetchRequest:request error:&error];
NSDecimalNumber *orderSum;
for (Person *person in persons)
orderSum = [NSDecimalNumber decimalNumberWithDecimal:orderSum.decimalValue
+[person valueForKeyPath:@"gifts.@sum.priceOfGift"].decimalValue]不过,现在使用NSDecimalNumber看起来有点不舒服。
https://stackoverflow.com/questions/13961073
复制相似问题