我正在尝试解析通过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块不匹配。
有人可以告诉我我做错了吗
答案 0 :(得分:5)
改为使用:
if ([jsonObject isKindOfClass:[NSArray class]]) {
}
对于类集群,这是唯一正确的方法 - isKindOfClass检查对象是类的实例还是其子类之一。有一个类似的方法,isMemberOfClass:,它测试严格的类相等/成员资格(即没有子类实例被认为是相等的)。