0

我在让 NSNumberFormatter 正常工作时遇到了一些麻烦。

我正在使用 Three20 框架在 iOS4 中编译。

所有的 NSNumberFormatter 选择器都需要一个叫做 NS_AVAILABLE 的东西作为选择器的第二个参数:

[numberFormatter setCurrencyGroupingSeparator:(NSString *)string __AVAILABILITY_INTERNAL__IPHONE_2:(int)_0];

我不确定我应该如何处理第二个参数。我试过了:

[numberFormatter setCurrencyGroupingSeparator:@"," __AVAILABILITY_INTERNAL__IPHONE_2:2]; // Warning: NSNumberFormatter' may not respond to '-setCurrencyGroupingSeparator:__AVAILABILITY_INTERNAL__IPHONE_2:
[numberFormatter setCurrencyGroupingSeparator:@"," __AVAILABILITY_INTERNAL__IPHONE_2:2_0]; //Error: invalid suffix "_0" on integer constant

以及更多的迭代。

如果我没有指定 __AVAILABLE_INTERNAL__IPHONE_2 它不会抛出警告并且编译得很好,但是选择器文本是黑色的,而不是 Xcode 中的深紫色,就好像它没有被识别一样。

这是完整的代码片段:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setCurrencyGroupingSeparator:@","];
[numberFormatter setUsesGroupingSeparator:YES];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
numberString = [NSString stringWithFormat: @"$%@",[numberFormatter stringFromNumber:myNsNumber]]; // myNsNumber is an NSNumber with a value of 10000000
NSLog(@"numberString: %@",numberString); // numberString: (null) | instead of numberString: $10,000,000

我用谷歌搜索了_AVAILABILITY_INTERNAL__IPHONE_2NS_AVAILABLE,但没有成功。

搜索 developer.apple.com 只会给我 iOS 4.0 API Diffs。

这是 Three20 的问题吗?有谁知道这里发生了什么或 NS_AVAILABLE 是什么?

4

1 回答 1

1

忘记到目前为止你在这篇文章中所拥有的一切。可用性资料让您知道这些方法包含在哪个 SDK 中。

这是工作NSNumberFormatter代码。

NSNumber *number = [UINumber numberWithInt:42];
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
[nf setFormatterBehavior:NSNumberFormatterBehavior10_4];
[nf setNumberStyle:NSNumberFormatterDecimalStyle];
NSString *string = [nf stringFromNumber:number];
[nf release];

如果你有一个空字符串,那么要么是因为你的 NSNumber 为空或 NaN,要么是你的格式搞砸了。

于 2010-10-28T07:36:13.313 回答