首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDecimalNumber和

NSDecimalNumber和
EN

Stack Overflow用户
提问于 2012-12-19 20:58:05
回答 2查看 841关注 0票数 3

在我的ios项目中,我使用两个实体(CoreData):人和礼物与许多关系。

我知道如何计算送给一个人的礼物的总和:

代码语言:javascript
复制
NSDecimalNumber *orderSum=[person.gifts valueForKeyPath:@"@sum.priceOfGift"];

但是我如何计算所有人的总和呢?

代码语言:javascript
复制
 -(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;

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-20 10:34:25

“所有的人的总和”就是把所有的人都叫出来数一数。

代码语言:javascript
复制
int sum = fetchedObjects.count;

但也许你指的是“所有人所有礼物的价格之和”。想想看,这和所有礼物的价格之和是一样的。因此,您只需取下礼物并计算。

代码语言:javascript
复制
NSNumber *sum = [self.fetchedResultsController.fetchedObjects 
      valueForKeyPath:@"@sum.priceOfGift"];
票数 2
EN

Stack Overflow用户

发布于 2012-12-19 21:50:16

您可以尝试获取所有的人员,然后使用和

代码语言:javascript
复制
    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看起来有点不舒服。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13961073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档