为什么NSString中的NSDecimalNumber?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么NSString中的NSDecimalNumber?相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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

希望这对你有所帮助。

以上是关于为什么NSString中的NSDecimalNumber?的主要内容,如果未能解决你的问题,请参考以下文章

NSMutableArray 中的 NSString 与 myString 上的不同

Objective-C 中的 NSString 标记化

如何在信息 plist 中的 Key 下保存 NSString?

NSString 返回空

ObjC中的[NSString containsString:]这个函数使用了啥算法?

NSString基本概念