gpt4 book ai didi

objective-c - 如何获取类簇中 "top"类的名称?

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:08 25 4
gpt4 key购买 nike

设置:

我有通过 JSON 传入的数据。

我使用 NSJSONSerialization 将 JSON 转换为对象。

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

(NSNumber、NSDecimalNumber 或 __NSCFNumber) - 所有这些都在 NSNumber 下的类集群中。


问题:

1) 我需要一种方法来获取类簇“umbrella”类 - NSNumber,当我有任何类型的值时 NSNumber、NSDecimalNumber 或 __NSCFNumber .

字符串也是如此。当我有以下任何一个时,我需要一种获取 NSString 的方法:NSString、NSMutableString、__NSCFString、__NSCFConstantString

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


我目前拥有的:

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

代码: https://github.com/icanzilb/JSONModel/blob/master/JSONModel/JSONModel.m#L45

最佳答案

你可以这样做:

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 .

关于objective-c - 如何获取类簇中 "top"类的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13845028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com