【发布时间】:2012-02-27 21:44:44
【问题描述】:
我正在解析一些 JSON 值。我有一个 NSDictionary,对于某个值,我得到的对象可以是 NSString(例如“USA”)或 NSDictionary(例如 1="USA"、2="UK" 等)。
有没有办法知道对象是 NSString 还是 NSDictionary ?
谢谢。
【问题讨论】:
标签: objective-c ios nsdictionary
我正在解析一些 JSON 值。我有一个 NSDictionary,对于某个值,我得到的对象可以是 NSString(例如“USA”)或 NSDictionary(例如 1="USA"、2="UK" 等)。
有没有办法知道对象是 NSString 还是 NSDictionary ?
谢谢。
【问题讨论】:
标签: objective-c ios nsdictionary
您必须使用 isKindOfClass 进行测试。
例如:
NSObject *object = [dict objectForKey:@:"key"]; if ([object isKindOfClass:[NSString 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:%i\tis dictionary:%i", isString, isDict);
【讨论】: