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

问题是 JSON 作为 ID,这行得通

jsonResponse = [(NSDictionary*)JSON objectForKey:@"posts"];

于 2012-06-05T07:43:59.397 回答
0

我认为您错误地放置了“帖子”而不是“帖子”。键“posts”包含一个字典数组,每个字典都有一个键“post”。你正在做的是你从数组中取出所有字典

  for (NSDictionary* day in jsonResponse) {

并检查字典中的关键“帖子”。确实,字典中没有称为“帖子”的键。我是“帖子”。“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 回答