嗯,它实际上是一个NSDecimalNumbers数组的总和,我希望得到绝对值...我总是觉得我正在与所有的转换对抗框架&所需的类型转换...从double到NSNumber到NSDecimalNumber,然后返回......所有这些都是为了保持NSDecimalNumber提供的精度。以下工作,但有一个更简单的方法,以避免所有这些转换&型铸造?
NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:[NSNumber numberWithDouble:fabs([totalAmt doubleValue])]];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];
也许我可以改变NSNumberFormatter(currencyFormatter)来忽略 - 符号?
答案 0 :(得分:1)
你不需要输入类型。
NSNumber *totalAmt = [customObjectArray valueForKeyPath:@"@sum.decimalNumberValue"];
NSString *totalAmtString = [currencyFormatter stringFromNumber:totalAmt];
sectionLabel.text = [NSString stringWithFormat:@"Total: %@", totalAmtString];
这样可以正常工作,因为NSDecimalNumber是NSNumber的子类。
如果sectionLabel
是您在IB中绑定的内容,请尝试将值totalAmt
绑定到'模式值'而不是sectionLabel
到'value'。这将保存最后一行:)
如果customObjectArray
是您可以通过NSArrayController
访问的内容,那么您应该在第一行中输入给定的密钥路径作为“模式值”绑定中的关键路径。
使用这种方式,您可以删除所有给定的三行:)