RestKit v 0.10.2 非常奇怪的 NSDecimalNumber 精度错误(或者可能是我没有看到的操作员错误)
类定义:
....
@property (nonatomic, assign) NSInteger menuItemId;
@property (nonatomic, strong) NSString *menuItemTitle;
@property (nonatomic, strong) NSString *menuItemDescription;
@property (nonatomic, strong) NSDecimalNumber *menuItemPrice;
....
JSON文本:
{"MenuItemId":5,
"MenuItemTitle":"Grilled Jumbo Shrimp Penne Pasta",
"MenuItemDescription":"spinach, mushrooms, garlic, sour cream, sun-dried tomatoes",
"MenuItemBasePrice":9.9500}
对象映射不起眼:
[objectMapping mapKeyPath:@"MenuItemId" toAttribute:@"menuItemId"];
[objectMapping mapKeyPath:@"MenuItemTitle" toAttribute:@"menuItemTitle"];
[objectMapping mapKeyPath:@"MenuItemDescription" toAttribute:@"menuItemDescription"];
[objectMapping mapKeyPath:@"MenuItemBasePrice" toAttribute:@"menuItemPrice"];
然而反序列化导致 menuItemPrice 值 = 9.9499999999
似乎错误/问题可以追溯到方法中 RKObjectMappingOperation 中的这些行
- (id)transformValue:(id)value atKeyPath:(NSString *)keyPath toType:(Class)destinationType
....
} else if ([sourceType isSubclassOfClass:[NSNumber class]] && [destinationType isSubclassOfClass:[NSDecimalNumber class]]) {
// Number -> Decimal Number
return [NSDecimalNumber decimalNumberWithDecimal:[value decimalValue]];
} ....
“值”是 NSCFNumber 类型,我似乎在从 NSCFNumber 到 NSDecimalNumber 的值映射中失去了精度。
这对我来说很重要,因为我正在处理价格和货币。
我在这里遗漏了明显的东西吗?没有看到如何/为什么会发生这种情况以及如何处理它。
谢谢!