Ios 如何从NSDictionary中获取NSDictionary中的所有值?
我正在与flickr合作,在示例获取中,我得到了以下信息: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
{
"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,对吗?我希望每个子项中的_内容键出现在我的单个单元格中,但我不想硬编码任何值。