Determinar si la configuration regional actual usa numbers no árabes en iOS.

En iOS, me gustaría realizar algunas funciones específicas si [NSLocale currentLocale] del usuario no utiliza los numbers arábigos (es decir, no 0123456789). ¿Cómo puedo verificar esta condición?

Lamentablemente, no hay un atributo directo para verificar, pero el siguiente código lo comprobará:

 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"); } 

La verificación se realiza a través de un set de dígitos (nSet) en contra del formatting de locale del local actual (numFmt). El valor se usa para formatear una cantidad de todos los dígitos, que podrían networkingucirse a less dígitos que 1 a 0. Sin embargo, esto podría servir como ejemplo de otras detecciones también. Tenga en count que el uso de un separador o un millar de caracteres de agrupación no interrumpirá la detección porque se está utilizando el superset.