我解析一些JSON值。我有一个NSDictionary,对于某个值,我得到的对象可以是NSString(例如“USA”)或NSDictionary(例如1 =“USA”,2 =“UK”等)。如何知道NSDictionary中的键的值是否是NSString或另一个NSDictionary?
有没有办法知道什么时候该对象是NSString或NSDictionary?
谢谢。
我解析一些JSON值。我有一个NSDictionary,对于某个值,我得到的对象可以是NSString(例如“USA”)或NSDictionary(例如1 =“USA”,2 =“UK”等)。如何知道NSDictionary中的键的值是否是NSString或另一个NSDictionary?
有没有办法知道什么时候该对象是NSString或NSDictionary?
谢谢。
所有类别的NSObject的类继承有几个方法来测试继承,行为和一致性:
– isKindOfClass:
– isMemberOfClass:
– respondsToSelector:
– conformsToProtocol:
在你的情况下使用isKindOfClass:方法:
if ([someObject isKindOfClass:[NSString class]]) {...}
if ([someObject isKindOfClass:[NSDictionary class]]) {...}
isKindOfClass:
消息是你的朋友:
id value = [dict [email protected]"foo"];
BOOL isString = [value isKindOfClass:[NSString class]];
BOOL isDict = [value iskindOfClass:[NSDictionary class]];
NSLog(@"is string:%i\tis dictionary:%i", isString, isDict);
你要测试使用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 }