Ios 遍历数组时遇到问题

Ios 遍历数组时遇到问题,ios,arrays,json,object,Ios,Arrays,Json,Object,各位进展如何——我在xcode中迭代数组时遇到了困难——希望有人能给我指出正确的方向……下面是我的回答 NSString *str=@"jsonUrlremoved"; NSURL *url=[NSURL URLWithString:str]; NSData *data=[NSData dataWithContentsOfURL:url]; NSError *error=nil; id response=[NSJSONSerialization JSONObjec

各位进展如何——我在xcode中迭代数组时遇到了困难——希望有人能给我指出正确的方向……下面是我的回答

NSString *str=@"jsonUrlremoved";
    NSURL *url=[NSURL URLWithString:str];
    NSData *data=[NSData dataWithContentsOfURL:url];
    NSError *error=nil;
    id response=[NSJSONSerialization JSONObjectWithData:data options:
                 NSJSONReadingMutableContainers error:&error];


{
   "item":{
      "1":{
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      },
      "2":{
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      },
      "3":{
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      }
   }
}
我尝试过转换到nsdictionary以及nsobject和nsarray,但运气不好(因为我是一个noob)


该应用程序崩溃或返回空值——欢迎提供任何指导。对于开场白,您的数据没有键@“image”的值

但除此之外,当您获取@“item”的对象时,它将返回另外三个字典的数组,其中包含@“1”、“2”和@“3”键。在这些键上做一个get,然后你就可以得到子字段了


在“for”循环开始处设置断点时,在调试器中执行“po result”。它将打印出您拥有的对象的类型(无论是NSDictionary还是NSArray),并更改代码以符合数据结构中的内容。

您的JSON对象不包含数组。因此,对其进行迭代是不可能的。实际上,您有嵌套字典。如果你需要做一些数组的东西,我会考虑把JSON的项目对象的值改成数组“[]”,而不是字典“{}”。这样,您甚至不必处理JSON对象中的索引。你可以免费得到它们

“更正的”JSON对象将如下所示:

{
   "item":[
      {
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      },
      {
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      },
      {
         "title":"Item Title",
         "description":"long description",
         "date":" March 01, 2014"
      }
   ]
}

如果你不想重组你的JSON,有一种方法可以这样做,这只是一种不被规定的方法:p

NSDictionary *results = [response objectForKey:@"item"];

    NSString *image = [[result objectForKey:@"1"]objectForKey:@"image"] ;
    NSString *desc = [[result objectForKey:@"1"]objectForKey:@"description"];
    NSString *title = [[result objectForKey:@"1"]objectForKey:@"title"];

类似地,对于其余对象

来说,如果
[response objectForKey:@“item”],则“results”似乎是“NSArray”
返回的不是
NSDictionary
NSArray
,您需要再次检查调用
JSONObjectWithData:
NSDictionary *results = [response objectForKey:@"item"];

    NSString *image = [[result objectForKey:@"1"]objectForKey:@"image"] ;
    NSString *desc = [[result objectForKey:@"1"]objectForKey:@"description"];
    NSString *title = [[result objectForKey:@"1"]objectForKey:@"title"];