Très étrange erreur de précision NSDecimalNumber (ou peut-être une erreur de l'opérateur que je ne vois pas) avec RestKit v 0.10.2NSDecimalNumber RestKit erreur de précision
définition de classe:
....
@property (nonatomic, assign) NSInteger menuItemId;
@property (nonatomic, strong) NSString *menuItemTitle;
@property (nonatomic, strong) NSString *menuItemDescription;
@property (nonatomic, strong) NSDecimalNumber *menuItemPrice;
....
texte JSON:
{"MenuItemId":5,
"MenuItemTitle":"Grilled Jumbo Shrimp Penne Pasta",
"MenuItemDescription":"spinach, mushrooms, garlic, sour cream, sun-dried tomatoes",
"MenuItemBasePrice":9.9500}
mapping objet est anodin:
[objectMapping mapKeyPath:@"MenuItemId" toAttribute:@"menuItemId"];
[objectMapping mapKeyPath:@"MenuItemTitle" toAttribute:@"menuItemTitle"];
[objectMapping mapKeyPath:@"MenuItemDescription" toAttribute:@"menuItemDescription"];
[objectMapping mapKeyPath:@"MenuItemBasePrice" toAttribute:@"menuItemPrice"];
Pourtant, les résultats désérialisation en valeur menuItemPrice = 9,9499999999
Il semble que l'erreur/problème peut être de remonter à ces lignes RKObjectMappingOperation dans la méthode
- (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]];
} ....
La « valeur » est de type NSCFNumber, et je comparais perdre la précision dans le mappage des valeurs de NSCFNumber à NSDecimalNumber.
Ceci est une grosse affaire pour moi car je traite avec des prix & devise.
Est-ce que je suis manquant ici? Ne pas voir comment/pourquoi cela arrive et quoi faire à ce sujet.
Merci!