2012-03-20 9 views
0

私が今ビルドしているアプリは、テキストファイルを「ダウンロード」してそこから番号を取得する可能性があります。シミュレータではすべてが完璧に動作しますが、デバイスでテストしたところ、クラッシュしました。しばらくすると、問題は小数点区切り記号であることが分かりました。そのファイルで私は.を使用し、私のiPhoneのローカル設定には,が必要です。その文字列の例:それは最初.に達したまでそれが問題ですので、私は成功し、アプリケーションを実行することができいくつかの小数点記号付きN​​SStringからNSStringへ

Product 1;100.00 
Product 2;82.85 
Product 3;95.12 
//etc... 

,に最初の数.を変更した後。

私は簡単に私はこのアプリは、任意の数の形式でどの国で仕事といくつかの特定の市場にそれを制限しないようにしたい、プログラム的,をすべて.を置き換えることができますが。

私はこれらの番号を取得するために使用していたコード:

NSString *fileContents = [[NSUserDefaults standardUserDefaults]objectForKey:theKey]; 
NSArray *allLinedStrings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 
NSMutableArray *allStringNormalized = [NSMutableArray array]; 
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
for (int i = 0; i < allLinedStrings.count; i++) { 
    NSString *bla = [allLinedStrings objectAtIndex:i]; 
    NSArray *bla1 = [bla componentsSeparatedByString:@";"]; 
    [allStringNormalized addObject:[formatter numberFromString:[bla1 objectAtIndex:1]]]; 
} 
self.values = [NSArray arrayWithArray:allStringNormalized]; 

任意の助けをいただければ幸いです。

ありがとうございました:)

答えて

3

を私が正しく問題を理解していれば、あなたはNSNumberFormatterは関係なく、常に携帯電話のロケールの、小数点として.を使用したいです。これに対する解決方法は簡単です。インスタンスメソッドとsetCurrencyDecimalSeparator:NSNumberFormatterに設定して小数点の桁区切りを.に設定します。

両方の小数点記号を設定する必要はありません。 numberStyleがの場合は、numberStyleの場合はNSNumberFormatterCurrencyStyleの場合はsetCurrencyDecimalSeparator:となります。

詳細については、the documentationを参照してください。

+0

ありがとうございます、それは私が探していたものです。異なるセパレータを使用する方法を見つけることを望んでいましたが(ある文字列が '.'を使用し、他の文字列が'、 'を使用している場合) – Novarg

+0

ファイルに対して自動検出を実行できます。あなたが*知っているなら、それはどちらかになるでしょう。または、どれが存在するかを見て、それを使用してください。 – freespace

関連する問題