【问题标题】:I want to get particular key wise value without For Loop use [closed]我想在不使用 For Loop 的情况下获得特定的关键值 [关闭]
【发布时间】:2013-03-23 10:19:28
【问题描述】:
"Setting":  "[{"WIDTH":"150",
      "HEIGHT":"140", 
      "IS_REQUIRED":"YES",
      "TOP_MARGIN":"30" , 
      "LEFT_MARGIN":"80",
      "LINEBREAK":"NO",
      "DEFAULT":"NULL"
    }]"

【问题讨论】:

  • 当我使用 WIDTH THEN GET VALUE 150 时。
  • 你为什么在你的问题中使用循环,你用循环尝试了什么?
  • @iPhoneGuru:你有包含 WIDTH 的对象数组吗?
  • @iPhoneGuru:什么错误?它是空的吗?然后试试 NSLog(@"%@", [mtmDict[@"field_setting"] class]);
  • @iPhoneGuru:这表明您没有数组或字典,请参阅 Martin 的答案。

标签: iphone objective-c nsdictionary


【解决方案1】:

你可以得到它:

 NSString *string=yourDict[@"WIDTH"];

或者,

NSString *string=[yourDict objectForKey:@"WIDTH"];

检查NSDictionary Documentation 和新的Objective-C literals

请开始学习 Objective-C,可能来自 Apple 文档。


编辑:

当您更改问题并添加“设置:”时。

现在你需要使用:

NSString *string=yourDict[@"Setting"][@"WIDTH"];

编辑 1:

我认为你有对象数组。每个对象包含一组WIDTHLINEBREAK 等。

NSString *string=yourDict[@"Setting"][0][@"WIDTH"];

【讨论】:

  • 我在字典里也有...但是在一次得到...之后我需要一个一个值...。
  • @iPhoneGuru:设置是一个键,宽度是另一个键,对吧?请充分说明,你想要什么
  • 我使用这种方法但得到“NULL”值
  • @iPhoneGuru:试试我的编辑 1 答案,看看是否有任何错误。
  • @iPhoneGuru:你无法表达你的要求,那么谁能帮助你。
【解决方案2】:

试试看:

    NSArray *itemObjects = (NSArray *) [resultDict objectForKey:@"Setting"];
    for (int i=0;i<[itemObjects count];i++) {
            NSDictionary *rssDict=[itemObjects objectAtIndex:i];
            NSString *str1=[rssDict objectForKey:@"WIDTH"];
            NSString *str2=[rssDict objectForKey:@"HEIGHT"];
            NSString *str3=[rssDict objectForKey:@"IS_REQUIRED"];
            NSString *str4=[rssDict objectForKey:@"LEFT_MARGIN"];

     }

【讨论】:

  • 我在这里看到了一个 for 循环。
  • 它不工作,还有一件事我想在没有循环的情况下获得价值
  • 谁支持这个,甚至看不到问题说的是什么*NO FOR LOOP。我建议你改用 while 循环,甚至是 do-while、recusive 方法或 goto 循环。
  • @SAMIT RATHOD.... 我已经完成了... NSDictionary *myDic = [NSJSONSerialization JSONObjectWithData:[[mtmDic valueForKey:@"field_setting"] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil] ;
【解决方案3】:

您的mtmDict[@"field_setting"] 不是数组或字典,而是带有 JSON 数据的 字符串。您可以使用NSJSONSerialization 将该字符串转换为数组并访问该值:

NSString *jsonString = mtmDict[@"field_setting"];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:NULL];

NSLog(@"%@", jsonArray[0][@"WIDTH"]);

【讨论】:

  • +1 是的,你没看错,我花了 1 个小时才明白。这称为知识和经验。
  • @AnoopVaidya:谢谢。我很高兴能在问题结束之前发布答案:-)
  • 那你需要我这边的+2 :) 怎么做,在 meta 中发帖:D
  • @Martin R .. 我已经做到了... NSDictionary *myDic = [NSJSONSerialization JSONObjectWithData:[[mtmDic valueForKey:@"field_setting"] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
  • @iPhoneGuru:这看起来像相同的代码,只是合并成一行。成功了吗?
【解决方案4】:
NSLog(@"%@",[[youDic objectForKey:@"Setting"] objectForKey:@"WIDTH"]);

 NSLog(@"%@",[[[youDic objectForKey:@"Setting"] objectAtIndex:0] objectForKey:@"WIDTH"]);

【讨论】:

  • 我已经完成了... NSDictionary *myDic = [NSJSONSerialization JSONObjectWithData:[[mtmDic valueForKey:@"field_setting"] dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingMutableContainers error:nil];
猜你喜欢
  • 2013-08-10
  • 2019-04-19
  • 2016-02-20
  • 2019-02-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-18
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多