2

OK、Json フィードを取得して、jsonArray という配列に保存します。次に、配列キーを取り出して文字列として保存する jsonArray をループします。次に、これらの文字列を innerDict という内部ディクショナリに追加します。次に、そのディクショナリを info ディクショナリに追加し、以下を使用して thePostCode キーを使用します。したがって、基本的に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 = "";
};
}

ここでやりたいことは、上記の "ME15 6YE" などの innerDict オブジェクトの値を取得し、それをクエリとして使用して、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"]);

}
4

2 に答える 2

1

正しい内部辞書を取得するには、次を使用しますobjectForKey

NSDictionary *innerDict = [infoDict objectForKey:@"ME15 6YE"];
NSLog(@"Url %@", [innerDict objectForKey:@"Url"]);
NSLog(@"Mail %@", [innerDict objectForKey:@"Mail"]);
NSLog(@"Items %@", [innerDict objectForKey:@"Items"]);
NSLog(@"Info %@", [innerDict objectForKey:@"Info"]);
于 2013-02-08T14:59:29.497 に答える
1

多分私は何かを誤解していますが、これはあなたの質問に答えるべきだと思います.

for ループで辞書を使用していますが、 innerDict経由でアクセスしようとしています。次のように変更します。

for (NSMutableDictionary *dictionary in infoDict) {
    NSLog(@"URL %@", [dictionary objectForKey:@"Url"]);
    NSLog(@"MAIL %@", [dictionary objectForKey:@"Mail"]);
    NSLog(@"ITEMS %@", [dictionary objectForKey:@"Items"]);
    NSLog(@"ITEMS %@", [dictionary objectForKey:@"Info"]);
}

または、単一の場合、

NSMutableDictionary *inner = [infoDict objectForKey:@"POST CODE HERE"];
NSLog(@"URL %@", [inner objectForKey:@"Url"]);
NSLog(@"MAIL %@", [inner objectForKey:@"Mail"]);
NSLog(@"ITEMS %@", [inner objectForKey:@"Items"]);
NSLog(@"ITEMS %@", [inner objectForKey:@"Info"]);
于 2013-02-08T15:00:36.853 に答える