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_2とNS_AVAILABLEをグーグルで検索しました。
developer.apple.comを検索すると、iOS 4.0APIDiffのみが表示されます。
これはThree20の問題ですか?ここで何が起こっているのか、NS_AVAILABLEが何であるのかを誰かが知っていますか?