2011-03-22 18 views
6

Quiero saber cuál es el símbolo decimal configurado en el dispositivo. Hasta ahora yo estaba usando este método:¿Cómo obtener el símbolo decimal?

NSString *decimalSymbol;  
NSNumberFormatter *f = [[NSNumberFormatter alloc] init];  
[f setNumberStyle:NSNumberFormatterDecimalStyle]; 
[f setMinimumFractionDigits:2];  
[f setMaximumFractionDigits:2];  
[f setGroupingSeparator:@" "];  

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];  
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMinimumFractionDigits:2];  
[formatter setMaximumFractionDigits:2];  
[formatter setGroupingSeparator:@" "];  

NSRange range = {1,1}; 

decimalSymbol = [[formatter stringFromNumber:[f numberFromString:[@"" stringByAppendingFormat:@"%.02f", 1.0f]]] substringWithRange:range]; 

[formatter release];  
[f release]; 

Se estaba trabajando bien hasta ahora, cuando estoy probando en otro dispositivo (4.3) - null se devuelve. ¿Cuál podría ser el problema?

¿Hay alguna otra forma de recuperar el símbolo decimal?

de editar posteriormente:
que puede utilizar:

decimalSymbol = [[@"" stringByAppendingFormat:@"%.02f", 1.0f] substringWithRange:range]; 

pero ¿por qué la otra manera, no DOE trabajar en este dispositivo en particular?

Respuesta

24
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; 
NSString *decimalSymbol = [formatter decimalSeparator]; 
2

decimalSeparator

Devuelve una cadena que contiene el carácter del receptor utiliza para representar separadores decimales.

- (NSString *)decimalSeparator

Ejemplo:

decimalSymbol = [f decimalSeparator];

20

La mejor manera es obtener el separador decimal de la configuración regional actual sin init ningún objeto NSNumberFormatter. De esta manera:

[[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator] 
+2

O desde iOS 10+, '[NSLocale currentLocale] .decimalSeparator;' – CyberMew

1

Swift 3 Versión:

NSLocale.current.decimalSeparator

Cuestiones relacionadas