ObjectiveResource and broken NSNumberFormatter

I have an application that uses an ObjectiveResource and has a class that contains NSNumber properties. I am trying to format NSNumber values ​​as integers and have the following code:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSLog(@"Price: %@", [formatter stringFromNumber:self.item.price])
NSLog(@"Price: %@", [formatter stringFromNumber:[NSNumber numberWithDouble:[self.item.price doubleValue]]]);

[formatter release];

What outputs:

2010-07-15 19: 33: 45.371 Sample [4193: 207] alcohol: (NULL)
2010-07-15 19: 33: 45.453 Sample [4193: 207] alcohol: $ 13.50

I'm not sure why the first element outputs (null), but the second works fine. I would prefer to use the syntax from the first and should not re-create the NSNumber.

+3
source share
2 answers

self.item.price is probably an NSString?

:

NSNumber *price = (NSNumber*)@"13.5"; // *shiver*, don't try this at home!
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSLog(@"Price: %@", [formatter stringFromNumber:price]);
NSLog(@"Price: %@", [formatter stringFromNumber:[NSNumber numberWithDouble:[price doubleValue]]]);

NSString doubleValue, :

2010-07-16 17:17:50.384 test[716:207] Price: (null)
2010-07-16 17:17:50.386 test[716:207] Price: $13.50
+2

XML- (XMLElementDelegate.m) , NSNumber. :

// uncomment this if you what to support NSNumber and NSDecimalNumber
// if you do your classId must be a NSNumber since rails will pass it as such
else if ([type isEqualToString:@"decimal"]) {
    return [NSDecimalNumber decimalNumberWithString:propertyValue];
}
else if ([type isEqualToString:@"integer"]) {
    return [NSNumber numberWithInt:[propertyValue intValue]];
}
+1

Source: https://habr.com/ru/post/1754910/


All Articles