设置:
我有数据来自JSON。
使用NSJSONSerialization我将JSON转换为对象。
JSON中的数字值在Objective-C中有几种不同的类类型:
(NSNumber, NSDecimalNumber or __NSCFNumber
) - 所有这些都在NSNumber
下的类群集中。
问题:
1)当我拥有任何类型NSNumber
的值时,我需要一种方法来获取类群“伞”类 - NSNumber, NSDecimalNumber or __NSCFNumber
。
字符串也一样。我需要一种方法来获取NSString
,当我有任何这些时:NSString, NSMutableString, __NSCFString, __NSCFConstantString
。
2)如果我可以通过代码获取NSString集群中所有类的列表,它也可以工作。然后我可以在运行时动态构建一个列表,并确保它已完成。
到目前为止我有什么:
到目前为止,我无法想出一个明智的方法来做到这一点。所以我有一个允许类型的列表,但我担心它可能不完整+它感觉不是最好的解决方案。
代码: https://github.com/icanzilb/JSONModel/blob/master/JSONModel/JSONModel.m#L45
答案 0 :(得分:2)
你可以这样做:
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
将包含object
为实例的类集群,如果它不是任何一个实例,则为Nil
。