2012-02-25 56 views
0

我有一個對象被解析爲NSString,當我追蹤出類名時,它說NCDecimalNumber。爲什麼? (我的理解是NSString集羣,但仍然不明白爲什麼NSDecimalNumber會是一個什麼樣的集羣后面的部分)爲什麼NSString中有NSDecimalNumber?

下後問過類似的問題,但沒有人回答爲什麼。 Converting NSDecimalNumber to NSString

+3

你有再現的情況的任何代碼? – Monolo 2012-02-25 17:38:39

+0

當你解析一個帶有值的JSON時,你可以複製它,並且你得到的對象與我上面列出的帖子鏈接相似。之後,如果您訪問該值(通過objectForKey)並將其保存到一個NSString(比如變量名稱「value」),如果您追蹤[value class],您將得到NSDecimalNumber – Boon 2012-02-25 18:09:50

回答

2

這聽起來像解碼器將數字解碼爲NSDecimalNumber(並將字符串解碼爲NSString s)。

請記住,Objective-C C,所以您可以有效地將任何內容分配給指針,由您來確保類型相對應。這就是爲什麼您可以將類型爲NSNumber的對象分配給聲明爲NSString*類型的指針。正如你所看到的,班級集羣與此無關。因此,在將對象分配給一個變量之前,應該檢查該類,或者將該對象分配給類型爲id(可以包含任何對象)的指針。

如果您需要基於其類型的對象一起工作,你可以做這樣的事情:

id obj = //... 

if ([obj isKindOfClass: [NSString class]]) { 

} 
else if ([obj isKindOfClass: [NSNumber class]]) { 

} 
else { 

} 
2

嘗試使用此:

NSString *string = [[NSStrig alloc] initWithFormat:@"%@", [DecimalNumber stringValue]]; 

希望這會幫助你。

相關問題