如何知道NSDictionary中键的值是NSString还是其他NSDictionary?

时间:2012-02-27 21:44:44

标签: objective-c ios nsdictionary

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

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

感谢。

3 个答案:

答案 0 :(得分:5)

您必须使用isKindOfClass进行测试。

例如:

NSObject *object = [dict objectForKey:@:"key"];
if ([object isKindOfClass:[NSString class]])
{
  // it's a string
}
else if ([object isKindOfClass:[NSDictionary class]])
{
  // it's a dictionary
}

答案 1 :(得分:2)

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

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

在你的情况下使用isKindOfClass:method:

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

答案 2 :(得分:0)

isKindOfClass:消息是您的朋友:

id value = [dict objectForKey@"foo"];

BOOL isString = [value isKindOfClass:[NSString class]];
BOOL isDict = [value iskindOfClass:[NSDictionary class]];

NSLog(@"is string:%i\tis dictionary:%i", isString, isDict);

参考资料:NSObject Protocol Reference