如何将 NSDictionary 解析为数组数组?

Posted

技术标签:

【中文标题】如何将 NSDictionary 解析为数组数组?【英文标题】:How to parse NSDictionary into array of arrays? 【发布时间】:2012-06-04 08:12:42 【问题描述】:

here 是我的数据模式,我想创建一个节数组,在这种情况下,每个节将在该节中包含一个行数组。我看了以下问题:

2D arrays using NSMutableArray objective-c multi-dimensional array

还有其他一些帖子,但没有得到任何结果。谁能指导我如何创建一组部分,每个部分都应包含自己的行..提前致谢

编辑 我已经解析了我的数据,pastebin 链接上的日志结果是一个 NSDictionary 这是我获取和解析它的方式:

 NSString*key1=[ result objectForKey:@"key" ];                
         NSString *s1=[@"http://" stringByAppendingString:server.text];
         NSString *s2=[s1 stringByAppendingString:@"/ipad/button.php"];
         NSURL *url2=[NSURL URLWithString:[s2 stringByAppendingString:[@"?key=" stringByAppendingString:key1]]];

        NSData *data2=[NSData dataWithContentsOfURL:url2];
         result2=[NSJSONSerialization JSONObjectWithData:data2 options:NSJSONReadingMutableContainers error:nil];

pastebin 中的结果是这样的:NSLog(@"Result: %@", result2);

【问题讨论】:

@Jack,我听从了你的回答,但没有得到任何结果,你能提供更多帮助吗? 我没有给出任何答案,我只是重新格式化了你的问题 啊抱歉,this 的第三个答案是由一个叫 Jack 的人给出的。我坚信他是你:) result2 是一个有效的字典对象吗? result2 包含两个主要变量,一个称为版本,它是一个数字,以及一个数组数组(内部数组的元素是字典..).. 它是这样的; buttonVersion:(some_number), templateCategory1:(obj1,obj2...);Category2:(obj1, obj2...)... 我希望场景足够清晰 【参考方案1】:

您的数据是 JSON 格式,因此只需使用 NSJSONSerialization 类为您创建数组数组。

NSString *yourData;
NSData *data = [yourData dataUsingEncoding:NSUTF8StringEncoding];
NSArray *arrayOfArrays = [NSJSONSerialization JSONObjectWithData:data 
    options:NSJSONReadingAllowFragments error:nil];

要在表格视图中使用您的部分数组,只需使用通常的表格视图datasource 方法:

// numberOfSectionsInTableView
return [array count];

// numberOfRowsInSection
return [[array objectAtIndex:section] count];

// cellForRowAtIndexPath
cell.textLabel.text = [[[array objectAtIndex:indexPath.section] 
   objectAtIndex:indexPath.row]
      objectForKey:"name"];

【讨论】:

我已经用 NSJSONSerialization 解析了数据,但我会试试你的代码 然后使用错误变量NSError *error; 像这样...error:&error]; NSLog(@"%@", error); 看看它说了什么。 那么请记录你的字符串、你的数据、你的数组和你的错误是什么——错误会变得很明显。 请看我的编辑,我之前已经使用过 NSJSONSerialization。从这一点上我能做些什么? 恭喜,您已经解决了问题。现在您需要做的就是检查复选标记...要使用 tableview 中的部分和行,请参阅我的编辑。

以上是关于如何将 NSDictionary 解析为数组数组?的主要内容,如果未能解决你的问题,请参考以下文章

根据 NSDictionary 键值将 NSArray 拆分为子数组

如何通过数组对象的 NSDate 日期将 NSArray 拆分为 NSDictionary?

plist中的NSdictionary对象需要是数组的数组,怎么转换?

JSON 解析:从 NSDictionary 检索数据并将其存储在数组中

IOS JSON解析包含多个数组

Obj-C:将对象数组转换为 NSDictionary 以与 JSONRepresentation 一起使用