Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
234 views
in Technique[技术] by (71.8m points)

iphone - How to set numberOfSectionsInTableView, titleForHeaderInSection using dynamic json data

I have some json data given below and I want to display it in a table where the section headers are Departments, Designing, Employees, Developing, Employees.

I used static data in numberOfSectionsInTableView, titleForHeaderInSection but I want to do it using dynamic data.

How can I do this?

{                                                                                                                                                                          
    "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"
                }
           ]
      }
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

first you have to create a NSDictionary from the string JSON object you specified.

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

Then in the table view delegate methods:

    - (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"];
    }

Or at least I would try to set them like this.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...