【发布时间】:2013-02-08 14:42:33
【问题描述】:
好的,我得到一个 Json 提要并将其存储到一个名为 jsonArray 的数组中。然后我循环遍历 jsonArray,取出数组键并将它们存储为字符串。然后,我将这些字符串添加到一个名为 innerDict 的内部字典中,然后使用下面的键将该字典添加到 info 字典中。所以基本上innerDict存储在infoDict里面。
-(void)pointInfo{
infoDict = [[NSMutableDictionary alloc]init];
for (int i = 0; i < jsonArray.count; i++) {
innerDict = [[NSMutableDictionary alloc]init];
info = [[jsonArray objectAtIndex:i]objectForKey:@"inf"];
thePostCode = [[jsonArray objectAtIndex:i]objectForKey:@"pc"];
mail = [[jsonArray objectAtIndex:i]objectForKey:@"mail"];
url = [[jsonArray objectAtIndex:i]objectForKey:@"url"];
type = [[jsonArray objectAtIndex:i]objectForKey:@"items"];
[innerDict setObject:type forKey:@"Items"];
[innerDict setObject:info forKey:@"Info"];
[innerDict setObject:mail forKey:@"Mail"];
[innerDict setObject:url forKey:@"Url"];
[infoDict setObject:innerDict forKey:thePostCode];
}
infoDict 的输出如下所示:
infoDict is {
"ME14 4NN" = {
Info = "";
Items = 4;
Mail = "";
Url = "";
};
"ME15 6LG" = {
Info = af;
Items = "0,6,9";
Mail = "";
Url = "";
};
"ME15 6YE" = {
Info = "";
Items = "4,5,6,7,11";
Mail = "";
Url = "";
};
}
现在我要做的是获取 innerDict 对象的值,即上面的“ME15 6YE”,并将其用作查询以提取 Info、Items、Mail 和 Url 键的关联数据。我已经盯着屏幕看了几个小时,但我就是不明白。
我可以使用下面的方法提取内部字典的最后一个对象,但是我想获取与特定邮政编码关联的所有值,这将是 innerDict 键。目前完全脑筋急转弯!
for (NSMutableDictionary *dictionary in infoDict) {
NSLog(@"URL %@", [innerDict objectForKey:@"Url"]);
NSLog(@"MAIL %@", [innerDict objectForKey:@"Mail"]);
NSLog(@"ITEMS %@", [innerDict objectForKey:@"Items"]);
NSLog(@"ITEMS %@", [innerDict objectForKey:@"Info"]);
}
【问题讨论】:
-
一个选项是创建一个自定义对象来存储您的数据,然后将这些对象的实例存储在字典中,键入该(邮政编码?)键值。换句话说,创建一个可以在整个项目中重复使用的模型。
-
@trojanfoe 我确信我可以在最后提到的 for 循环中添加一些简单的东西来提取特定 postCode 的值,但我现在想不出来..
-
好的,我已经提供了答案,但它似乎太明显了,不正确......
标签: ios ios5 nsdictionary nsmutabledictionary key-value-coding