什么是__AVAILABILITY_INTERNAL__IPHONE_2,NS_AVAILABLE?试图使用NSNumberFormatter,返回(null)

时间:2010-10-28 05:45:59

标签: iphone ios4 three20 nsnumberformatter

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

我正在使用Three20 Framework在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

我用Google搜索 _AVAILABILITY_INTERNAL__IPHONE_2 NS_AVAILABLE ,但没有运气。

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

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

1 个答案:

答案 0 :(得分: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是null或NaN,要么你的格式搞砸了。