2010-04-04 5 views
16

je récupérer une clé d'un objet qui ressemble à ceci:Conversion NSDecimalNumber à NSString

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

La valeur clé est récupéré comme ceci:

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

Plutôt que d'être un typeId NSString , c'est un NSDecimalNumber. Pourquoi donc?

Comment le convertir en NSString?

Répondre

29

Vous devez utiliser la fonction stringWithFormat:

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

ou stringValue:

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

Cela devrait fonctionner:

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

Utilisez cette option pour convertir NSDecimalNumber à NSString:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

Utilisez cette option pour convertir NSString à NSDecimalNumber:

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

dec = (NSDecimalNumber *)string1; 
+2

Vous ne pouvez pas simplement jeter un '' NSString' un NSDecimalNumber', ils sont différents de type et vous aurez échouerait si vous essayez d'utiliser des méthodes 'NSDecimalNumber' sur ce pointeur. – axiixc

1

Si vous souhaitez obtenir une valeur de chaîne, il suffit d'utiliser "description". Il fonctionne très bien, même si le type de retour est NSDecimalNumber ou NSString, ou que ce soit:

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

Puisque c'est le résultat de la recherche en haut et je ne vois pas une question pour NSDecimalNumber à cordes à Swift, voilà. Cela affichera le séparateur décimal localisé et toutes les décimales avec une valeur différente de zéro.

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