Objective c 如何获取“的名称”;top";类集群中的类?

Objective c 如何获取“的名称”;top";类集群中的类?,objective-c,class,types,class-cluster,Objective C,Class,Types,Class Cluster,设置: 我有通过JSON输入的数据 使用NSJSONSerialization,我将JSON转换为一个对象 JSON中的数值在Objective-C中以几种不同的可能类类型出现: (NSNumber、NSDecimalNumber或u NSCFNumber)-所有这些都在NSNumber下的类簇中 问题: 1) 我需要一种方法来获取类集群“伞形”类-NSNumber,当我有任何类型的值NSNumber、NSDecimalNumber或u NSCFNumber时 弦也是如此。我需要一种方法来获取

设置:

我有通过JSON输入的数据

使用NSJSONSerialization,我将JSON转换为一个对象

JSON中的数值在Objective-C中以几种不同的可能类类型出现:

NSNumber、NSDecimalNumber或u NSCFNumber
)-所有这些都在
NSNumber
下的类簇中


问题:

1) 我需要一种方法来获取类集群“伞形”类-
NSNumber
,当我有任何类型的值
NSNumber、NSDecimalNumber或u NSCFNumber

弦也是如此。我需要一种方法来获取
NSString
,当我有以下任何一种时:
NSString、NSMutableString、\uu NSCFString、\uu NSCFConstantString

2) 例如,如果我可以通过代码获得NSString集群中所有类的列表,那么它也可以工作。然后,我可以在运行时动态构建一个列表,并确保它是完整的


到目前为止我拥有的:

到目前为止,我想不出一个明智的方法来做到这一点。因此,我有一个允许的类型列表,但我担心它可能不完整+它感觉不是最好的解决方案

代码: 您可以执行以下操作:

id object = // obtain the object somehow

Class cls = Nil; // for now

// property list types, roughly equivalent to JSON's fundamental types
NSArray *classes = @[[NSString class], [NSNumber class], [NSArray class], [NSDictionary class], [NSData class], [NSDate class]];

Class c;
for (c in classes) {
    if ([object isKintOfClass:c]) {
        cls = c;
        break;
    }
}

您可以通过向
classes
数组添加其他类来扩展列表。最后,<代码> CLS < /代码>将包含一个类簇,其中<代码>对象<代码>是一个实例,或者<代码> nIL/COD>如果不是一个实例。

也请注意,<代码> NSCFBOOLION<代码>是一个子类:<代码> NStUn> <代码>。这适用于核心基础类。请记住,可能会有更多的类集群。@Berik我没有说明/暗示这是通用的,OP的问题也不需要这样。