2016-09-08 4 views
0

"$229,000"の形式でバックナンバーを送信するサーバーと通信しています。私たちは次のように番号にこれを変換するためにNSNumberFormatterを使用iOS 10 NumberFormatterはNILを返しますが、iOS9、iOS8、iOS7で動作します

IOS-10GM未満の任意のiOSバージョンに
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setCurrencyCode:@"US"]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 
[formatter setCurrencySymbol:@""]; 

、通貨記号は、空の文字列またはさもなければnilフォーマッタが失敗し、nilを返すことがあります。

しかし、iOS-10では、通貨記号を"$"として追加しない限り、上記のコードは失敗します。

iOSのバージョンを確認する以外の方法はありますか(NSFoundationVersionNumber経由)ですか?

答えて

2

あなたのコードは次のようにそれを変更することで、iOSのすべてのバージョンで動作させることができます。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
[formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]]; 

あなたがパースされた文字列が既に適しているため、通貨コードやシンボルを設定する必要はありませんロケールは設定されています。

@"$229,000"numberFromString:に渡すと、このコードでは有効なNSNumberが正しく与えられます。

iOS 10,9.3、および8.4でテスト済みです。

+0

[formatter setLenient:YES]を追加しないでください。あなたの文字列にスペースがあれば。 – Reaper

関連する問題