如何在UITableView中显示JSON数据

时间:2012-06-04 02:36:42

标签: ios xcode json

我有以下JSON数据,这是来自我的Web服务的响应。

     {"d": [{"raumKlassenObject":"Telepresenzraum"},
{"raumKlassenObject":"Besprechungsraum"},
{"raumKlassenObject":"Videokonferenzraum"},
{"raumKlassenObject":"IT-Schulungsraum"},
{"raumKlassenObject":"Konferenzraum"}]}

如何在TableView中显示Data Telepresenzraum,Besprechungsraum等...

到目前为止,我的代码已经发布了。

    - (void)viewDidLoad
{
    [super viewDidLoad];

    dic = [NSJSONSerialization JSONObjectWithData:result options:kNilOptions error:nil];
    array = [dic allKeys];

}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{

    // Return the number of sections.
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    // Return the number of rows in the section.
    return array.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   cell.textLabel.text=[NSString stringWithFormat:@"%@",[dic objectForKey:@"d"]];    



return cell;
}

如果我这样做,Tableview中的输出是

 [{"raumKlassenObject":"Telepresenzraum"},{"raumKlassenObject":"Besprechungsraum"},{"raumKlassenObject":"Videokonferenzraum"},{"raumKlassenObject":"IT-Schulungsraum"},{"raumKlassenObject":"Konferenzraum"}]

我不知道如何在tableview行中只显示Telepresenzraum,Besprechungsraum,Videokonferenzraum等。

请求帮助。

2 个答案:

答案 0 :(得分:2)

你的顶级词典只有一个键“d”,所以array.count为1,[dic objectForKey:@“d”]将是整个词典数组。

因此,要将此重新定义的数组修复为:

array = [[dic valueForKey:@"d"] valueForKey:@"raumKlassenObject"];

这应该为您提供该键的所有值的数组。然后,将第一行替换为第二行:

cell.textLabel.text= [NSString stringWithFormat:@"%@",[dic objectForKey:@"d"]]; 
cell.textLabel.text= [array objectAtIndex:indexPath.row];

答案 1 :(得分:0)

您需要cell的零检查。在您滚动一点之前,为零。如果它是nil,则需要使用UITableView单元类init方法实际创建单元格。