我想在不使用 For Loop 的情况下获得特定的关键值 [关闭]

Posted

技术标签:

【中文标题】我想在不使用 For Loop 的情况下获得特定的关键值 [关闭]【英文标题】:I want to get particular key wise value without For Loop use [closed] 【发布时间】: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 的答案。 【参考方案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];

以上是关于我想在不使用 For Loop 的情况下获得特定的关键值 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 for 循环的情况下从 appsettings 文件中读取对象数组中特定键的值

如何在不使用API 的情况下获得Google云端硬盘的可用空间?

如何在不使用 if 或 for 的情况下找到一个数字是正数、负数还是零? [复制]

是否有任何公式可以在不使用谷歌地图的情况下获得两个位置之间的旅行时间或从颤动的距离

如何在不下载整个片段的情况下使用媒体源缓冲区和分段 mp4 在特定时间启动视频?

如何在不使用坐标方法的情况下在 XCode UI 测试中点击字符串语句的特定部分/单词