【问题标题】:IOS: how to get Dictionary value which is inside an arrayIOS:如何获取数组内的字典值
【发布时间】:2015-12-07 07:39:06
【问题描述】:

我正在做一个项目,其中我有一个包含字典的数组 在给定的形式中,我必须根据“size_key”获取“Size_val”的值。

array : (
        {
        "as_per_size" =         {
            lowercatname = abcd;
            sizes =             (
                                {
                    "size_key" = "UP_CHEST";
                    "size_name" = "UP_CHEST";
                    "size_val" = 4;
                    typecat = 1;
                },
                            {
                "size_key" = LENGTH;
                "size_name" = LENGTH;
                "size_val" = 1;
                typecat = 1;
            },
                            {
                "size_key" = DP;
                "size_name" = DP;
                "size_val" = 3;
                typecat = 1;
            },
                            {
                "size_key" = "YOKE_LENGTH";
                "size_name" = "YOKE_LENGTH";
                "size_val" = 2;
                typecat = 1;
            },
                            {
                "size_key" = KNEE;
                "size_name" = KNEE;
                "size_val" = 2;
                typecat = 2;
            },
                            {
                "size_key" = THIGH;
                "size_name" = THIGH;
                "size_val" = 1;
                typecat = 2;
            },
                            {
                "size_key" = CALF;
                "size_name" = CALF;
                "size_val" = 3;
                typecat = 2;
            }
        );
        uppercatname = CHOLI;
    };

我只想在“size_key”的基础上得到“Size_val”的值。 我使用代码来获取uppercatname的值。

upstring1 = [[[arrFilteredOrder objectAtIndex:0] objectForKey:@"as_per_size"] objectForKey:@"uppercatname"];
            TypeLabel.text = upstring1;

请给我一些解决方案如何获得这个值

【问题讨论】:

    标签: ios nsarray nsdictionary


    【解决方案1】:

    显然你的sizes值也是一个数组,所以你必须先得到这个数组,然后循环遍历sizes数组来得到size字典,然后从size字典中得到你拥有的size_key的正确size_val。

    所以对于第一个条目和你的尺寸键

    NSArray* sizes = [[[arrFilteredOrder[0] objectForKey:@"as_per_size"] objectForKey;@"sizes];
    
    foreach(NSDictionary* sizeDict in sizes {
        NSString* sizeKey = sizeDict[@"size_key];
        if([sizeKey isEqualToString:<your size key>])
        {
                NSString* sizeVal = sizeDict[@"size_val"];
                // now do something with your value
                ...
        }
    }
    

    【讨论】:

      【解决方案2】:
      NSArray *arr = [[[[array objectAtIndex:0]objectForKey:@"as_per_size"]objectForKey:@"sizes"]copy];
      
      for(int i=0;i<[arr count];i++)
      {
         NSString *strSizekey = [NSString stringWithFormat:@"%@",[[arr objectAtIndex:i]objectForKey:@"size_key"]];
         NSString *strSizeValue = [NSString stringWithFormat:@"%@",[[arr objectAtIndex:i]objectForKey:@"size_val"]];
      }
      

      【讨论】:

        【解决方案3】:

        你可以这样得到:

        NSString *sizeValue = nil;
        
        NSArray *sizes = [arrFilteredOrder.firstObject valueForKeyPath:@"as_per_size.sizes"];
        for (NSDictionary *size in sizes) {
            if ([size[@"size_key"] isEqualToString:sizeKey]) {
                sizeValue = [size[@"size_val"] description]; //converting to string
            }
        }
        

        【讨论】:

          【解决方案4】:

          请尝试我下面的编码

          NSDictionary *dict = (NSDictionary *)[[[arrFilteredOrder objectAtIndex:0] objectForKey:@"as_per_size"] objectForKey:@"sizes"];
          

          【讨论】:

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