2010-04-04 61 views
16

我檢索從物體看起來像這樣一個鍵:轉換NSDecimalNumber到的NSString

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

密鑰值被檢索到這樣的:

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

不是TYPEID是一個NSString它是一個NSDecimalNumber。這是爲什麼?

如何將其轉換爲NSString?

回答

29

您需要使用stringWithFormat功能:

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

stringValue

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

這應該工作:

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

使用此NSDecimalNumber轉換成的NSString:

NSDecimalNumber* dec1; 
NSString* str; 

str = dec1.stringValue; 

使用此功能的NSString轉換爲NSDecimalNumber:

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

dec = (NSDecimalNumber *)string1; 
+2

你不能只投了'NSString'到'NSDecimalNumber',他們是不同類型的,如果你嘗試使用'對指針NSDecimalNumber'方法,你會崩潰。 – axiixc 2014-04-30 04:31:42

1

如果你想要得到的字符串值,只需使用 「說明」。它工作正常,即使返回類型爲NSDecimalNumber,或的NSString,或什麼:

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

因爲這是頂級的搜索結果,我沒有看到一個NSDecimalNumber問題字符串斯威夫特,在這兒呢。這將顯示本地化的小數點分隔符和所有小數位的非零值。

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