Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从NSDictionary中获取NSDictionary中的所有值?_Ios_Objective C_Json_Nsdictionary_Flickr - Fatal编程技术网

Ios 如何从NSDictionary中获取NSDictionary中的所有值?

Ios 如何从NSDictionary中获取NSDictionary中的所有值?,ios,objective-c,json,nsdictionary,flickr,Ios,Objective C,Json,Nsdictionary,Flickr,我正在与flickr合作,在示例获取中,我得到了以下信息: { "api_key" = { "_content" = 3c6eeeae4711a5f478d3da796750e06b; }; format = { "_content" = json; }; method = { "_content" = "flickr.test.echo"; }; nojsoncall

我正在与flickr合作,在示例获取中,我得到了以下信息:

{
    "api_key" =     {
        "_content" = 3c6eeeae4711a5f478d3da796750e06b;
    };
    format =     {
        "_content" = json;
    };
    method =     {
        "_content" = "flickr.test.echo";
    };
    nojsoncallback =     {
        "_content" = 1;
    };
    stat = ok;
}
这是一个包含5个条目的字典(api_键、格式、方法、nojsoncallback和stat)。前4个实体本身就是词典


首先,我的原始字典中有第5个元素,它不是字典,它只是原始字典中的最后一个条目(stat=ok)。此外,我希望每个子项中的_content键出现在我的单个单元格中,但我不想硬编码任何值。我是否有来设置数组?

NSDictionary
有一个漂亮的小方法叫做。这是你的救世主

[dict valueForKeyPath:@"api_key._content"]
[dict valueForKeyPath:@"format._content"]
[dict valueForKeyPath:@"method._content"]
[dict valueForKeyPath:@"nojsoncallback._content"]
它所做的是遍历键路径并获取每个JSON子结构中
content
的值。否则,您将不得不为循环编写一个
并循环通过它。干净利落吧?

试试这个

for (NSString *key in dictionary){
    id object = dictionary[key];
    if ([object isKindOfClass:[NSDictionary class]]) {
    //Now you can work on the dictionary object
    }
}

你试过什么?这是NSDictionary的一个完全直接的用法。你知道它的结构,你知道所有的键。我想到了一个循环。(虽然可能,您实际上必须查看NSDictionary文档。)是的,但我想编写一个循环,在不知道密钥名称的情况下获取每个objectForKey。如果您在最初提出问题时提到了这一点,那就太好了。您能更详细地说明您希望得到什么样的结果吗?我的意思是,你已经有字典了;它们是键值对。那么你想要什么呢?“获取每个objectForKey,而不知道它们的键名”-你的意思是你只想要像
[3c6eeeae4711a5f478d3da796750e06b,json,flickr.test.echo,1]这样的结果?还是什么?谢谢,这很方便!:)但是,我需要分别获取每个值并将其放入不同的单元格中。因此,基本上我必须在这里创建一个开关,以便在正确的单元格中输入正确的值,对吗?是的,如果要将每个值放入不同的单元格中,您可能必须在
UITableViewCell
索引路径上输入
if-else
。上面提到的JSON解析需要在顶层循环中完成。到目前为止,我已经完成了…
for(flickrDictionary中的NSString*键){NSLog(@“键是%@”,flickrDictionary[key]);id object=flickrDictionary[key];//如果([object iskindof class:[NSDictionary class]]),这将是apikey、格式、方法等{//前4个是数组crsh dicts NSLog(@“object valueForKey is%@,[object valueForKey:@“_content”]);cell.textlab.text=[object valueForKey:@“_content”];}其他{cell.textlab.text=flickrDictionary[key];}
我想我会把它放到一个数组中,我试过你的建议:
for(NSString*key in flickrDictionary){id object=flickrDictionary[key];if([object iskindof class:[NSDictionary class]]){cell.textlab.text=[object valueForKey:@“_content”;}
因此,我的意思是,如果第一个键(api_键)的对象是字典,它是字典,那么获取它的_内容键并将其放入单元格中。但是我在所有5个单元格中都获得了api_键:(我必须以某种方式使用indexpath,对吗?我希望每个子项中的_内容键出现在我的单个单元格中,但我不想硬编码任何值。