为什么NSString中的NSDecimalNumber?

时间:2012-02-25 17:33:14

标签: objective-c cocoa nsstring nsnumber

我有一个被解析为NSString的对象,当我追踪出类名时,它会显示NCDecimalNumber。为什么? (我理解NSString是一个群集,但仍然不明白为什么NSDecimalNumber将成为群集背后的一部分)

以下帖子提出了类似的问题,但没有人回答原因。 Converting NSDecimalNumber to NSString

2 个答案:

答案 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 {

}