0

この JSON 応答でアイテム (投稿) の数をカウントする必要があります。

2012-06-04 14:09:57.872 horitable[72261:11903] JSON : {
posts =     (
            {
        post =             {
            eventdate = "2012-03-31";
            eventid = 2;
            eventimage = "http://hernandoz.local/~hernandoz/kopict/02_31march2012.jpg";
            eventinfo = "02 event";
            eventname = "xplosion 02";
        };
    },
            {
        post =             {
            eventdate = "2012-07-07";
            eventid = 3;
            eventimage = "http://hernandoz.local/~hernandoz/kopict/greg_vs_turner.jpg";
            eventinfo = "02 event";
            eventname = "Xplosion 02";
        };
    },
            {
        post =             {
            eventdate = "2012-04-29";
            eventid = 4;
            eventimage = "http://hernandoz.local/~hernandoz/kopict/ko_itclub_apr_2012.jpg";
            eventinfo = "KO East London Interclub";
            eventname = "KO Interclub";
        };
    }
);

}

イベント(投稿)が3つしかないことはわかっています。これは私が使用しているコードです

 [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
    NSLog(@"JSON : %@", JSON); //get the JSON response

    // 6.1 - Load JSON into internal variable
    jsonResponse = JSON;
    // 6.2 - Get the number of shows (post)
    int shows = 0;
    for (NSDictionary* day in jsonResponse) {
        shows += [[day objectForKey:@"posts"] count];

        NSLog(@"count : %d",shows);
    }

エラーが表示されますが、理由がわかりません。

-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x76986f0

誰か助けてください。ありがとう

4

5 に答える 5

1

これを試して

NSLog(@"Response members= %@",responseString);
NSArray *array = [(NSDictionary*)[responseString JSONValue] objectForKey:@"posts"];
NSLog(@"Count value= %d",[array count]);    
于 2012-06-04T13:34:05.400 に答える
0

あなたの場合、あなたはこれを行うことができます

 [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
 NSLog(@"JSON : %@", JSON); //get the JSON response

// 6.1 - Load JSON into internal variable
jsonResponse = JSON;
// 6.2 - Get the number of shows (post)
int shows = [[jsonResponse objectForKey:@"posts"] count];

   NSLog(@"count : %d",shows);
于 2012-06-04T13:25:09.067 に答える
0

最初にjsonを次のように断片化する必要があります

NSDictionary * dict = [JSON JSONValue];

また

NSDictionary * dict = [JSON JSONFragmentValue];

それから

for (NSDictionary* day in dict) {
    shows += [[day objectForKey:@"posts"] count];

    NSLog(@"count : %d",shows);
}
于 2012-06-04T13:29:56.113 に答える
0

「投稿」ではなく「投稿」を間違って入れていると思います。キー「posts」には辞書の配列が含まれており、各辞書にはキー「post」があります。あなたがしていることは、配列からすべての辞書を行単位で取得することです

  for (NSDictionary* day in jsonResponse) {

辞書でキー「posts」を確認します。実は辞書に「投稿」というキーはありません。私は「ポスト」です。また、「post」の値は配列ではなく NSDictionary です。だからあなたはcountそこに電話することはできません。問題の解決策は、 for ループ内の不要な API を削除することです

  [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
  jsonResponse = JSON;

  int shows = 0;
  for (NSDictionary* day in jsonResponse) {
      shows += 1;
  }

  NSLog(@"count : %d",shows);
于 2012-06-05T08:18:12.663 に答える