我正在解析一些JSON值。我有一个NSDictionary,对于某个值,我得到的对象可以是NSString(例如“USA”)或NSDictionary(例如1 =“USA”,2 =“UK”等)。
有没有办法知道对象何时是NSString或NSDictionary?
感谢。
答案 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);