如何知道NSDictionary中键的值是NSString还是另一个NSDictionary



我正在解析一些JSON值。我有一个NSDictionary,对于某个值,我得到的对象可以是NSString(例如"USA")或NSDictionic(例如1="USA"、2="UK"等)。

有没有办法知道对象何时是NSString或NSDictionary?

谢谢。

您必须使用isKindOfClass进行测试。

例如:

NSObject*object=[dict objectForKey:@:"key"];if([object isKindOfClass:[NString-class]]){//这是一根绳子}else if([object isKindOfClass:[NSDictionary class]]){//这是一本字典}

NSObject类继承的所有类都有两种方法来测试继承、行为和一致性:

– isKindOfClass:
– isMemberOfClass:
– respondsToSelector:
– conformsToProtocol:

在您的情况下,使用isKindOfClass:方法:

if ([someObject isKindOfClass:[NSString class]]) {...}
if ([someObject isKindOfClass:[NSDictionary class]]) {...}

isKindOfClass:消息是您的朋友:

id value = [dict objectForKey@"foo"];
BOOL isString = [value isKindOfClass:[NSString class]];
BOOL isDict = [value iskindOfClass:[NSDictionary class]];
NSLog(@"is string:%itis dictionary:%i", isString, isDict);

参考资料:NSObject协议参考

最新更新