2010-10-28 19 views
0

我一直有一些麻煩讓NSNumberFormatter正常工作。什麼是__AVAILABILITY_INTERNAL__IPHONE_2,NS_AVAILABLE?試圖使用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 

我GOOGLE _AVAILABILITY_INTERNAL__IPHONE_2NS_AVAILABLE沒有運氣。

搜索developer.apple.com只給我iOS 4.0的API區別。

這是Three20的問題嗎?有沒有人知道這裏發生了什麼或NS_AVAILABLE是關於什麼?

回答

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,或者你的格式被搞砸了。

+0

確定這確實奏效。出於某種原因,我不得不重新聲明我的NSNumber - > NSNumber * number = [NSNumber numberWithInt:[myNsNumber intValue]];謝謝。 – 2010-11-02 05:57:00