【发布时间】:2014-08-11 10:43:53
【问题描述】:
我有一个方法循环遍历我的核心数据获取对象数组,并使用每件商品的价格和数量来计算总价。它似乎大部分时间都在返回,例如23.44, 3.65 但我注意到有时它会返回例如 63.1 如下所示。
这是我的方法:
+ (NSDecimalNumber *)totalPriceOfItems:(NSManagedObjectContext *)managedObjectContext
{
NSError *error = nil;
NSDecimalNumber *totalPrice = [[NSDecimalNumber alloc] initWithInt:0];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"BagItem"];
// Get fetched objects and store in NSArray
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
for (BagItem *bagItem in fetchedObjects) {
NSDecimalNumber *price = [[NSDecimalNumber alloc] initWithDecimal:[[bagItem price] decimalValue]];
NSDecimalNumber *quantity = [[NSDecimalNumber alloc] initWithInt:[[bagItem quantity] intValue] + 1];
NSDecimalNumber *priceFromQuantity = [price decimalNumberByMultiplyingBy:quantity];
totalPrice = [totalPrice decimalNumberByAdding:priceFromQuantity];
NSLog(@"total: %@", totalPrice);
}
return totalPrice;
}
我在这里做错了吗?
没有太多使用 NSDecimalNumber 的经验,但希望有人能帮我解决这个问题。
感谢您的宝贵时间。
【问题讨论】:
标签: objective-c cocoa-touch core-data nsnumber nsdecimalnumber