2010-04-04 14 views
16

ich einen Schlüssel von einem Objekt abzurufen, das wie folgt aussieht:Converting NSDecimalNumber zu NSString

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

Anstatt TypeId ein NSString zu sein:

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

Der Schlüsselwert wie folgt abgerufen wird Es ist eine NSDecimalNumber. Warum das?

Wie konvertiere ich es in einen NSString?

Antwort

29

Sie benötigen die stringWithFormat Funktion verwenden:

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

oder stringValue:

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

Diese Arbeit sollte:

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

verwenden NSDecimalNumber zu NSString konvertieren:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

verwenden NSString zu NSDecimalNumber konvertieren:

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

dec = (NSDecimalNumber *)string1; 
+2

Sie können einen 'NSString' zu einem' NSDecimalNumber' nicht nur werfen, sie sind die andere Art und Sie werden abstürzen, wenn Sie versuchen, 'NSDecimalNumber' Methoden auf diesem Zeiger zu verwenden. – axiixc

1

Wenn Sie String-Wert erhalten möchten, nur "description" verwenden. Es funktioniert gut, auch wenn zurückgegeben Typ ist NSDecimalNumber oder NSString, oder was auch immer:

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

Da dies das Top-Sucher ist, und ich sehe nicht, eine Frage für NSDecimalNumber zu String in Swift, hier ist es. Dies zeigt das lokalisierte Dezimaltrennzeichen und alle Dezimalstellen mit einem Wert ungleich Null.

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