2010-04-04 24 views
16

estoy recuperar una clave de un objeto que se ve así:conversión de NSDecimalNumber a NSString

po obj 
{ 
    TypeID = 3; 
    TypeName = Asset; 
} 

El valor de la clave se está recuperando de esta manera:

NSString *typeId = (NSString*)[obj objectForKey:@"TypeID"]; 

En lugar de ser un TypeId NSString , es un NSDecimalNumber. ¿Porqué es eso?

¿Cómo lo convierto en un NSString?

Respuesta

29

Es necesario utilizar la función stringWithFormat:

NSString *typeId = [NSString stringWithFormat:@"%@", [obj objectForKey:@"TypeID"]]; 

o stringValue:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue]; 
3

esto debería funcionar:

NSString *typeId = [[obj objectForKey:@"TypeID"] stringValue]; 
-1

Utilice esta opción para convertir NSDecimalNumber a NSString:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

Utilice esta opción para convertir a NSString NSDecimalNumber:

NSString* string1 = @"Stack overflow 123"; 
NSDecimalNumber* dec; 

dec = (NSDecimalNumber *)string1; 
+2

No se puede emitir un '' NSString' a un NSDecimalNumber', que son tipo diferente de y usted bloquearse si se intenta utilizar los métodos 'NSDecimalNumber' en ese puntero. – axiixc

1

Si desea obtener valor de cadena, sólo tiene que utilizar "Descripción". Funciona bien, incluso si el tipo devuelto es NSDecimalNumber o NSString, o lo que sea:

NSString *typeId = [[obj objectForKey:@"TypeID"] description]; 
0

Dado que este es el resultado de la búsqueda superior y no veo una pregunta para NSDecimalNumber a Cadena en Swift, aquí está. Esto mostrará el separador decimal localizado y todas las posiciones decimales con un valor distinto de cero.

let string = decimalNumber.description(withLocale: Locale.current)