2

私のアプリでは、ローカル設定に応じてユーザーが右小数点記号を入力するかどうかを確認しようとしています(ユーザーが間違えた場合、そのデータはCoreDataデータベースに入力されません):

- (void)save {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSLocale *locale = [NSLocale currentLocale];

ユーザー入力を取得します:

NSString *firstForDistance = _forDistanceTextField.text;

文字列から小数点を抽出してみてください:

NSString *separator = [firstForDistance decimalSeparator];

セパレータがユーザーのローカル設定に適合するかどうか、または彼がタイプミスをしたかどうかを確認するよりも。タイプミスや間違いの場合は、ローカル設定の小数点に置き換えます。

if (separator != [locale objectForKey:NSLocaleDecimalSeparator]) {
    firstForDistance = [firstForDistance stringByReplacingOccurrencesOfString:separator withString:[locale objectForKey: NSLocaleDecimalSeparator]];
}

残りのコード:

self.user.forDistance = [numberFormatter numberFromString:firstForDistance];

[self.delegate usersMakeViewController:self addUser:self.user];
}

それは素晴らしくて簡単ですが、抽出は機能しません:

NSString *separator = [firstForDistance decimalSeparator];

メソッド「decimalSeparator」はNSNumberFormatterのインスタンスメソッドであり、Xcodeから障害が発生します。

どうすれば修正できますか?

4

2 に答える 2

0

以下の文字列にdecimalSeparatorがあるかどうかを確認できます

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [numberFormatter setLocale:[NSLocale currentLocale]];
    if ([textField.text rangeOfString:numberFormatter.decimalSeparator].location != NSNotFound) 
        NSLog(@"YES,  Give number has decimalSeparator");
    else
        NSLog(@"NO, dont have decimalSeparator");
于 2012-12-05T12:55:48.690 に答える
-1

このように修正しました:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

NSLocale *locale = [NSLocale currentLocale];
NSString *firstForDistance = _forDistanceTextField.text;

firstForDistance = [firstForDistance stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]];
firstForDistance = [firstForDistance stringByReplacingOccurrencesOfString:@"," withString:[locale objectForKey: NSLocaleDecimalSeparator]];

self.user.forDistance = [numberFormatter numberFromString:firstForDistance];
[self.delegate usersMakeViewController:self addUser:self.user];

これが誰かに役立つことを願っています。

于 2012-12-12T19:31:29.287 に答える