NSString 中的数值显示在错误的区域设置中



我正在从JSON解析NSString,然后该值显示在UILable中,该值包含@"12",@"13"之类的数字

现在当我这样做时:

self.lable.text =  @"12";

标签以阿拉伯数字 ( ١٢ ) 显示值

我试图将 JSON 响应解析为 NSNumber,然后使用 NSNumberFormatter 在下面的代码段中强制使用"en_US"语言环境,但它不起作用。

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US"]];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:0];
[numberFormatter setMinimumFractionDigits:0];
NSString *formattedNumberString = [numberFormatter stringFromNumber:number];
self.lable.text = formattedNumberString;

我的应用程序语言是"英语 - 开发语言",列在项目部分的信息选项卡下。

我运行应用程序的设备的区域设置为"美国",语言设置为"英语"

我试图运行[NSLocale currentLocale]来仔细检查,但我得到了"en_US"

我遇到了这个问题,任何指示和帮助都值得赞赏。

很奇怪。我不会强制本地,而是将其设置为设备的本地设置,您可以按如下方式设置字符串格式:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.locale = [NSLocale currentLocale];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
numberFormatter.maximumFractionDigits = 0;
self.label.text = [NSString StringWithFormat:@"%@", [numberFormatter stringForObjectValue:number]];

另一个建议是始终使用 localizedStringFromNumber 来确保字符串的正确本地行为:

NSString *formattedNumberString = [numberFormatter localizedStringFromNumber:number];

我希望它有所帮助。

最新更新