我正在从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];
我希望它有所帮助。