Ios 遍历数组时遇到问题
各位进展如何——我在xcode中迭代数组时遇到了困难——希望有人能给我指出正确的方向……下面是我的回答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
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"];