为什么NSString中的NSDecimalNumber?

问题描述 投票:0回答:2

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

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

objective-c cocoa nsstring nsnumber
2个回答
2
投票

这听起来像解码器将数字解码为NSDecimalNumber(和字符串到NSStrings)。

请记住,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]];

希望这对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.