我在让 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_2和NS_AVAILABLE,但没有成功。
搜索 developer.apple.com 只会给我 iOS 4.0 API Diffs。
这是 Three20 的问题吗?有谁知道这里发生了什么或 NS_AVAILABLE 是什么?