簡體   English   中英

ObjectiveResource和破壞的NSNumberFormatter

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM