Ios N小数和
在我的ios项目中,我使用了两个实体(CoreData):人和礼物,它们之间有很多关系 我知道如何计算给一个人的礼物总额: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
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)。