Tar*_*w45 1 iphone objective-c ios
我知道不应该问这类问题.但是,我在这里坚持了几天没有任何线索.所以,我真的需要帮助.
我有一个核心数据对象,比方说,产品.
//产品
NSDecimalNumber*数量
NSDecimalNumber*价格
我要做的是总结价格并将其设置为标签.我在这里搜索并发现一些话题说NSDecimalNumber不能做标准匹配操作,因为它是一个包装实际值的对象.它必须通过decimalNumberByAdding和decimalNumberByMultiplyingBy来完成.所以,我写了下面的代码,
NSDecimalNumber *totalPrice = [[NSDecimalNumber alloc] initWithDouble:0.0];
[self.productArray enumerateObjectsUsingBlock:^(Product *product, NSUInteger idx, BOOL *stop) {
[totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]];
NSLog(@"%@", totalPrice);
NSLog(@"%@", totalPrice.doubleValue);
NSLog(@"%@", totalPrice.decimalValue);
}];
Run Code Online (Sandbox Code Playgroud)
这些NSLog都没有显示正确的结果.他们既没有显示0或NULL
但是,如果我NSLog下面的代码,可以显示正确的结果.
[product.price decimalNumberByMultiplyingBy:product.quantity]
Run Code Online (Sandbox Code Playgroud)
你能帮我指出我在这里想念的是什么吗?
您没有分配返回值.
[totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]];
Run Code Online (Sandbox Code Playgroud)
应该:
totalPrice = [totalPrice decimalNumberByAdding:[product.price decimalNumberByMultiplyingBy:product.quantity]];
Run Code Online (Sandbox Code Playgroud)
由于decimalNumberByAdding返回一个值,因此不会自动更新变量.因此,totalPrice始终为0,这是您在init上分配的值.
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |