1

我正在尝试解析通过 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 块不匹配。

有人能告诉我我做错了什么吗

4

1 回答 1

5

改用:

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

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

于 2012-07-23T17:29:23.817 回答