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

您可以检查下面的字符串是否有小数分隔符

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 回答