Core data 对CoreData属性求和

Core data 对CoreData属性求和,core-data,Core Data,我有一个名为“值”的属性(浮动)的实体“费用”。我用NSFetchedResultsController从CoreData填充了一个表视图。 我试图在标签(或表头)中显示我所有开支的“价值”总和,但在阅读苹果文档和谷歌搜索不同论坛后,我无法实现解决方案。当然是初学者迷失方向。 请欣赏任何关于实现此操作之王的最佳方法的指示,或任何显示类似解决方案的代码。首先。如果要计算和存储货币,应使用Decimal(nsdecimalnumber的核心数据名称)和nsdecimalnumber。 我用float

我有一个名为“值”的属性(浮动)的实体“费用”。我用
NSFetchedResultsController
从CoreData填充了一个表视图。 我试图在标签(或表头)中显示我所有开支的“价值”总和,但在阅读苹果文档和谷歌搜索不同论坛后,我无法实现解决方案。当然是初学者迷失方向。
请欣赏任何关于实现此操作之王的最佳方法的指示,或任何显示类似解决方案的代码。

首先。如果要计算和存储货币,应使用Decimal(nsdecimalnumber的核心数据名称)和nsdecimalnumber。 我用float实现了您需要的代码。但你真的应该把它改成小数。阅读了解你为什么要这样做

如果要将费用值添加到节标题中,很容易。基本上,您需要计算该部分中所有对象的费用,并将其相加

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
    float expense = 0;
    for (NSManagedObject *object in [sectionInfo objects]) {
        expense += [[object valueForKey:@"expense"] floatValue];
    }
    return [NSString stringWithFormat:@"%@ [Expense: %f]", [sectionInfo name], expense];
}
没什么好解释的

编辑:如果您使用NSDecimalNumber,这将是代码

NSDecimalNumber *expense = [NSDecimalNumber decimalNumberWithString:@"0"];
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
    NSDecimalNumber *objectExpenseNumber = [object valueForKey:@"expense"];
    expense = [expense decimalNumberByAdding:objectExpenseNumber];
}
NSLog(@"Expense: %@", expense);

感谢您花了一些时间“fluchtpunkt”,并指出了处理货币的方法。好的建议总是受欢迎和采纳的。我的主要问题是如何计算用户可以在TableView中插入的所有费用的“值”的@和,并更准确地存储为具有属性“值”或“金额”的实体“费用”。我没有找到用CoreData计算属性总和的方法。然后,我会在某处显示“总量”。谢谢Hanks fluchtpunkt,我一直在编写您的代码,试图理解它,而不仅仅是“粘贴”。它正在如愿地工作。
NSDecimalNumber *expense = [NSDecimalNumber decimalNumberWithString:@"0"];
for (NSManagedObject *object in [self.fetchedResultsController fetchedObjects]) {
    NSDecimalNumber *objectExpenseNumber = [object valueForKey:@"expense"];
    expense = [expense decimalNumberByAdding:objectExpenseNumber];
}
NSLog(@"Expense: %@", expense);