确定当前区域设置是否在iOS中使用非阿拉伯数字?

Mat*_*tyG 4 cocoa-touch localization nslocalizedstring ios nslocale

在iOS中,如果用户[NSLocale currentLocale]不使用阿拉伯数字(即不是0123456789),我想执行一些特定的功能.我该如何检查这种情况?

iOS*_*iOS 6

不幸的是没有直接属性要检查,但是下面的代码会检查它:

NSCharacterSet *nSet = [NSCharacterSet characterSetWithCharactersInString:@"1234567890"];
NSNumberFormatter *numFmt = [[NSNumberFormatter alloc] init];
NSDecimalNumber *value = [NSDecimalNumber decimalNumberWithString:@"1234567890"];
NSCharacterSet *fSet = [NSCharacterSet characterSetWithCharactersInString:[numFmt stringFromNumber:value]];
if([fSet isSupersetOfSet:nSet]==NO){
    NSLog(@"No arabic digits");
}
Run Code Online (Sandbox Code Playgroud)

检查是通过一组数字(nSet)对当前语言环境的语言环境感知格式化程序(numFmt)完成的.该值用于格式化所有数字的数字,可以减少到少于1到0的数字.但是,这也可以作为其他检测的示例.请注意,使用分隔符或千位分组字符不会破坏检测,因为正在使用超集.