[英]ObjectiveResource and broken NSNumberFormatter
我有一個使用ObjectiveResource的應用程序,並且有一個包含NSNumber屬性的類。 我試圖將NSNumber值格式化為整數,並具有以下代碼:
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];
哪個輸出:
2010-07-15 19:33:45.371樣品[4193:207]酒精:(null)
2010-07-15 19:33:45.453樣品[4193:207]酒精:13.50美元
我不確定為什么第一項輸出(null),但第二項工作正常。 我更喜歡使用第一個語法,而不必重新創建NSNumber。
self.item.price可能是一個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
要修復,在XML Element Delegate(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]];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.