【问题标题】:Populate UITableView with nested JSON使用嵌套 JSON 填充 UITableView
【发布时间】: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。

标签: iphone ios json uitableview


【解决方案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"];
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 2013-06-18
        • 2015-09-16
        • 1970-01-01
        相关资源
        最近更新 更多