检索NSDictionary对象的类

时间:2013-04-07 10:28:29

标签: objective-c class nsdictionary

为什么以下代码不返回NSDictionary,而是返回__NSDictionaryI

NSDictionary* dict = [NSDictionary dictionary];
Class c = [dict class];
NSLog(@"%@", c);

我可以选择检查对象是否为NSDictionary的实例?正如我发现的那样,我无法致电[__NSDictionaryI class],因为它不可见。

[dict classForCoder]返回NSDictionary并且似​​乎是一个很好的解决方案,但是在调用某个自定义类的对象时它不会失败吗?检查对象是否是给定类的实例的最通用方法是什么?

2 个答案:

答案 0 :(得分:2)

根据可以找到的标题here __NSDictionaryI是NSDictionary的后代,所以我想你可以使用这个检查:

NSDictionary* dict = [NSDictionary dictionary];
if ([dict isKindOfClass:[NSDictionary class]])
{
//your code here
}

它应该适用于NSDictionary和__NSDictionaryI实例。

答案 1 :(得分:1)

How to check a class in a NSDictionary

if([object isKindOfClass:[AObjectClass class])
{
    NSLog(@"object is of type AObjectClass");
}