Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios N小数和_Ios_Core Data_Sum_Key Value Coding_Nsdecimalnumber - Fatal编程技术网

Ios N小数和

Ios N小数和,ios,core-data,sum,key-value-coding,nsdecimalnumber,Ios,Core Data,Sum,Key Value Coding,Nsdecimalnumber,在我的ios项目中,我使用了两个实体(CoreData):人和礼物,它们之间有很多关系 我知道如何计算给一个人的礼物总额: NSDecimalNumber *orderSum=[person.gifts valueForKeyPath:@"@sum.priceOfGift"]; 但是我如何计算所有人的总和呢 -(NSFetchedResultsController *) fetchedResultsController { if (_fetchedResultsController != n

在我的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;

}

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

    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看起来有点不舒服。

所有人的总和”将是获取所有人并对他们进行计数

int sum = fetchedObjects.count;
但也许你指的是“所有人所有礼物的价格总和”。如果你仔细想想,它等于所有礼物的价格之和。因此,你只需取礼物并计算

NSNumber *sum = [self.fetchedResultsController.fetchedObjects 
      valueForKeyPath:@"@sum.priceOfGift"];

只需获取所有的pesronsCan,您给出了一个简单的示例…?二进制表达式('NSDecimal'和'id')的操作数无效,只需获取十进制值亲爱的Mundi,谢谢您的回答。请看一下更新后的代码,我如何使用:NSNumber*sum=[fetchedObjects valueForKeyPath:@“@sum.priceOfGift”];谢谢
fetchedObjects
NSFetchedResultsController
的属性。请参见上文.NSDecimalNumber*sum=[self.fetchedResultsController.fetchedObjects valueForKeyPath:@“@sum.priceOfGift]”;totalAbel.text=[currencyFormatter stringFromNumber:sum];NSLog(@“%@总和”,总和);在控制台中,我得到一个(null)SumGo并进行调试。礼物的价格是多少?没有拼写错误吗?仔细检查托管对象子类声明等。属性的类型应为NSNumber。在.m文件中,它应该是
@dynamic
。您应该验证数据库中是否存在要求和的有效数字(例如,通过NSLog)。