使用嵌套 JSON 填充 UITableView

Posted

技术标签:

【中文标题】使用嵌套 JSON 填充 UITableView【英文标题】:Populate UITableView with nested JSON 【发布时间】:2012-06-12 14:19:09 【问题描述】:

正如标题所示,我正在尝试从 JSON 填充 UITableView。我得到了看起来像

的 json 对象
  
    applications: 
           iphone: 
             application: [
                            
                              title: "Title",
                             ,
                             
                              title: "Title2",
                             ,
                             
                              title: "Title3",
                             
                           ]
                      
                     
    

就这样继续下去,在应用程序中嵌套了几个 title 字段。

我想使用所有标题作为我的单元格标签。 我可以得到这样的列表

for (int i = 0; i < 10; i++)
    
        titleString = [[[[[result objectForKey:@"applications"] objectForKey:@"iphone"] objectForKey:@"application"] objectAtIndex:i] objectForKey:@"title"];
        NSLog(@"title %@", titleString);
    

这确实有效,因为我可以记录标题列表......但我知道我以错误的方式处理这个问题,我什至无法弄清楚 myArray 在return [myArray count] 中的内容numberOfRowsInSection 方法...完全迷失在这里!帮助表示赞赏!

【问题讨论】:

您的 json 对象看起来不完整。 是的,因为我把它剪掉了,只是为了清楚起见。我在应用程序中成功检索了 JSON。 【参考方案1】:

[[[result objectForKey:@"applications"] objectForKey:@"iphone"] objectForKey:@"application"] 将返回数组,因此最好存储此数组并在需要的地方使用它,如下所示:

NSArray *titleArray = [[[result objectForKey:@"applications"] objectForKey:@"iphone"] objectForKey:@"application"];

要存储这个数组,你可以使用实例变量,这样你就可以在整个文件中使用它。

【讨论】:

【参考方案2】:

您可以将这些标题存储在一个数组中,然后将该数组用作表格的数据源。您的 myArray 将是您存储标题的数组。

【讨论】:

【参考方案3】:

首先是应用程序字典 此应用程序字典有一个关键 iPhone 字典 这个 iphoneDic 有一个字典数组

NSMutableDictionary *applicationsDict = [response objectForKey:@"applications"];
NSMutableDictionary *iphoneDict = [applicationsDict objectForKey:@"iphone"];
NSMutableArray *applicationArray = [iphoneDict objectForKey:@"application"];

现在在table view的方法numberOfRowInSection:中返回数组计数

return [applicationArray count]

现在在 cellForRowAtIndexPath: 方法中,我们将使用这个 applicationArray 使用数组...

NSMutableDictionary *titleDict = [applicationArray objectAtIndex:indexPath.row];
cell.titleLabel.text = [titleDict objectForKey:@"title"];

希望对你有帮助

【讨论】:

以上是关于使用嵌套 JSON 填充 UITableView的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Extjs 4 中使用嵌套的 JSON 填充表单

如何使用嵌套的 json 对象填充 vue 条件库中的 vue 组件

结构化/嵌套 json 数据以填充树形网格

从 JSON 数据的嵌套表单数组填充表单控件中的值

如何使用嵌套对象填充 Vue 下拉列表

使用 Python 使用嵌套字典填充 MongoDB 数据库