2010-04-04 6 views
16

Sto recuperando una chiave da un oggetto che assomiglia a questo:Conversione NSDecimalNumber a NSString

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

Il valore della chiave viene recuperata in questo modo:

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

Piuttosto che TypeId essere un NSString , è un NSDecimalNumber. Perché?

Come si converte in NSString?

risposta

29

è necessario utilizzare la funzione stringWithFormat:

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

o stringValue:

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

questo dovrebbe funzionare:

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

Utilizzare questo per convertire NSDecimalNumber a NSString:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

Utilizzare questo per convertire NSString a NSDecimalNumber:

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

dec = (NSDecimalNumber *)string1; 
+2

Non si può semplicemente lanciare un 'NSString' ad un' NSDecimalNumber', sono diverso tipo di e ti crash se si tenta di utilizzare 'metodi NSDecimalNumber' su quel puntatore. – axiixc

1

Se si desidera ottenere valore stringa, basta usare "descrizione". Funziona bene anche se il tipo restituito è NSDecimalNumber, o NSString, o qualsiasi altra cosa:

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

Dal momento che questo è il risultato di ricerca in alto e non vedo una domanda per NSDecimalNumber a stringa a Swift, eccolo qui. Questo mostrerà il separatore decimale localizzato e tutte le posizioni decimali con un valore diverso da zero.

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