为什么不[NSArray类]返回我的预期?

时间:2012-07-23 17:27:50

标签: iphone parsing nsarray

我正在尝试解析通过Web服务获得的一些JSON。逻辑是:

id jsonObject = ....;      //This can be string or array 

if([jsonObject class] == [NSString class] || [jsonObject class] == [NSMutableString class]{

// DO some thing
}
else if([jsonObject class] = [NSArray class] || [jsonObject class] == [NSMutableArray class]{

// Do some thing else
}

然而,对于其中一个元素,我遇到了一个奇怪的问题。这个元素的类应该是NSArray,但是当我运行代码时,我将该类视为__NSArrayM。这与第二个if块不匹配。

有人可以告诉我我做错了吗

1 个答案:

答案 0 :(得分:5)

改为使用:

if ([jsonObject isKindOfClass:[NSArray class]]) {
}

对于类集群,这是唯一正确的方法 - isKindOfClass检查对象是类的实例还是其子类之一。有一个类似的方法,isMemberOfClass:,它测试严格的类相等/成员资格(即没有子类实例被认为是相等的)。