【问题标题】:How to know whether the value of a key in NSDictionary is NSString or another NSDictionary?如何知道 NSDictionary 中某个键的值是 NSString 还是另一个 NSDictionary?
【发布时间】:2012-02-27 21:44:44
【问题描述】:

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

有没有办法知道对象是 NSString 还是 NSDictionary ?

谢谢。

【问题讨论】:

    标签: objective-c ios nsdictionary


    【解决方案1】:

    您必须使用 isKindOfClass 进行测试。

    例如:

    NSObject *object = [dict objectForKey:@:"key"]; if ([object isKindOfClass:[NSString class]]) { // 这是一个字符串 } else if ([object isKindOfClass:[NSDictionary class]]) { // 这是一个字典 }

    【讨论】:

      【解决方案2】:

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

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

      在你的情况下使用 isKindOfClass: 方法:

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

      【讨论】:

        【解决方案3】:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多