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

Ios NSString中的数值显示在错误的区域设置中,ios,objective-c,nsnumberformatter,nslocale,Ios,Objective C,Nsnumberformatter,Nslocale,我正在解析JSON中的NSString,然后该值显示在一个UILable中,该值包含像@“12”、“13”这样的数字 现在当我这样做的时候: self.lable.text = @"12"; 标签以阿拉伯数字(١٢)显示值 我尝试将JSON响应解析为NSNumber,然后使用NSNUMBERFORMATER在下面的代码段中强制使用“en_US”语言环境,但没有成功 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc]

我正在解析JSON中的NSString,然后该值显示在一个UILable中,该值包含像@“12”、“13”这样的数字

现在当我这样做的时候:

self.lable.text =  @"12";
标签以阿拉伯数字(١٢)显示值

我尝试将JSON响应解析为NSNumber,然后使用NSNUMBERFORMATER在下面的代码段中强制使用“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];
希望有帮助。

“12”
不是12的NSString值
@“12”
是12的NSString值
“12”
是12的
char*
字符串值,分配给
text
属性时通常会导致崩溃,但有时可能会导致明显的“正常”但虚假的操作。