0

NSNumberFormatterを正しく動作させるのに問題がありました。

私はiOS4でThree20Frameworkを使用してコンパイルしています。

すべてのNSNumberFormatterセレクターには、セレクターの2番目のパラメーターとしてNS_AVAILABLEと呼ばれるものが必要です。

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

2番目のパラメーターで何をすべきかわかりません。私はもう試した:

[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.0APIDiffのみが表示されます。

これは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];

null 文字列がある場合は、NSNumber が null または NaN であるか、形式が台無しになっていることが原因です。

于 2010-10-28T07:36:13.313 に答える