2012-07-23 117 views
1

我想解析一些通过Web服务获得的JSON。逻辑是:为什么[NSArray类]没有返回我所期望的?

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块不匹配。

有没有人告诉我什么,我做错了

回答

5

使用,而不是:

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

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

+0

我希望我能给你2票...我浪费4小时试图调试... – user1454940 2012-07-23 18:43:17

+0

@ user1454940没问题,我很高兴我可以帮助(顺便说一句,接受让我15代表所以你基本上给了我两个半;) – 2012-07-23 18:45:11

+0

大声笑...谢谢..有一个美好的一天 – user1454940 2012-07-23 19:50:29

相关问题