我解析一些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 }