我有一個對象被解析爲NSString
,當我追蹤出類名時,它說NCDecimalNumber
。爲什麼? (我的理解是NSString
集羣,但仍然不明白爲什麼NSDecimalNumber
會是一個什麼樣的集羣后面的部分)爲什麼NSString中有NSDecimalNumber?
下後問過類似的問題,但沒有人回答爲什麼。 Converting NSDecimalNumber to NSString
我有一個對象被解析爲NSString
,當我追蹤出類名時,它說NCDecimalNumber
。爲什麼? (我的理解是NSString
集羣,但仍然不明白爲什麼NSDecimalNumber
會是一個什麼樣的集羣后面的部分)爲什麼NSString中有NSDecimalNumber?
下後問過類似的問題,但沒有人回答爲什麼。 Converting NSDecimalNumber to NSString
這聽起來像解碼器將數字解碼爲NSDecimalNumber
(並將字符串解碼爲NSString
s)。
請記住,Objective-C 是 C,所以您可以有效地將任何內容分配給指針,由您來確保類型相對應。這就是爲什麼您可以將類型爲NSNumber
的對象分配給聲明爲NSString*
類型的指針。正如你所看到的,班級集羣與此無關。因此,在將對象分配給一個變量之前,應該檢查該類,或者將該對象分配給類型爲id
(可以包含任何對象)的指針。
如果您需要基於其類型的對象一起工作,你可以做這樣的事情:
id obj = //...
if ([obj isKindOfClass: [NSString class]]) {
}
else if ([obj isKindOfClass: [NSNumber class]]) {
}
else {
}
嘗試使用此:
NSString *string = [[NSStrig alloc] initWithFormat:@"%@", [DecimalNumber stringValue]];
希望這會幫助你。
你有再現的情況的任何代碼? – Monolo 2012-02-25 17:38:39
當你解析一個帶有值的JSON時,你可以複製它,並且你得到的對象與我上面列出的帖子鏈接相似。之後,如果您訪問該值(通過objectForKey)並將其保存到一個NSString(比如變量名稱「value」),如果您追蹤[value class],您將得到NSDecimalNumber – Boon 2012-02-25 18:09:50