如何使用动态json数据设置numberOfSectionsInTableView,titleForHeaderInSection

时间:2012-10-03 07:37:17

标签: iphone objective-c ios json

我在下面给出了一些json数据,我希望将它显示在一个表中,其中部分标题是Departments,Designing,Employees,Developing,Employees。

我在numberOfSectionsInTableViewtitleForHeaderInSection中使用了静态数据,但我希望使用动态数据。

我该怎么做?

{                                                                                                                                                                          
    "Departments":[
        {
            "name":"Designing",
            "id":"1.1",
            "Employees":[
                {
                    "name":"Ramesh",
                    "id":"1.1.1",
                    "salary":"4lakhs"
                },
                {
                    "name":"Suresh",
                    "id":"1.1.2",
                    "salary":"4lakhs"
                }
            ]
        },
        {
            "name":"Developing",
            "id":"1.2",
            "Employees":[
                {
                    "name":"Ram",
                    "id":"1.2.1",
                    "salary":"4lakhs"
                },
                {
                    "name":"Sam",
                    "id":"1.2.2",
                    "salary":"4lakhs"
                }
           ]
      }
}

1 个答案:

答案 0 :(得分:0)

首先,您必须从您指定的字符串JSON对象创建NSDictionary。

    NSDictionary *myDict = [NSJSONSerialization JSONObjectWithData:webData options:nil error:NULL];

然后在表格视图中委托方法:

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return [[myDict valueForKey:@"Departments"] count];
    }

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [[[[myDict valueForKey:@"Departments"] objectAtIndex:section] valueForKey:@"Employees"] count];
    }

    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
    {
        return [[[myDict valueForKey:@"Departments"] objectAtIndex:section] valueForKey:@"name"];
    }

或者至少我会尝试将它们设置为这样。