我有一个被解析为NSString
的对象,当我追踪出类名时,它会显示NCDecimalNumber
。为什么? (我理解NSString
是一个群集,但仍然不明白为什么NSDecimalNumber
将成为群集背后的一部分)
以下帖子提出了类似的问题,但没有人回答原因。 Converting NSDecimalNumber to NSString
答案 0 :(得分:2)
尝试使用它:
NSString *string = [[NSStrig alloc] initWithFormat:@"%@", [DecimalNumber stringValue]];
希望这会对你有所帮助。
答案 1 :(得分:2)
这听起来像解码器将数字解码为NSDecimalNumber
(并将字符串解析为NSString
s)。
请记住,Objective-C 是 C,因此您可以有效地将任何内容分配给指针,由您来确保类型对应。这就是为什么您可以将类型为NSNumber
的对象分配给声明为NSString*
类型的指针。如您所见,类集群与此无关。
因此,在将对象分配给变量之前,应该检查类,或者只是将对象分配给类型为id
的指针(可以容纳任何对象)。
如果您需要根据类型处理对象,可以执行以下操作:
id obj = //...
if ( [obj isKindOfClass: [NSString class]] ) {
}
else if ( [obj isKindOfClass: [NSNumber class]] ) {
}
else {
}