在UITableviewcell中解析JSON

时间:2014-09-02 08:33:49

标签: ios json uitableview

我是iOS新手。我必须解析以下JSON并将其显示到UITableViewCell。当我解析并仅附加国家/地区项目时,单个数组出现在单元格中。但所有阵列都是为了等级,国家,人口,旗帜没有出现在单元格中。

如何在数组中添加所有rank,country,population,flag并将它们全部放入单元格中。我把它们全部变成了字符串,然后变成了数组。并将整个数组附加到主数组。

以下是JSON -

 http://www.androidbegin.com/tutorial/jsonparsetutorial.txt

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
  {               
      NSDictionary *allDataDictionary = [NSJSONSerialization JSONObjectWithData:webdata options:0 error:nil];                  
      NSArray *arrayWorldPopulation = [allDataDictionary objectForKey:@"worldpopulation"];
      for (NSDictionary *diction in arrayWorldPopulation) 
       {
           NSString *country = [diction objectForKey:@"country"];
           NSString *population = [diction objectForKey:@"population"];
           NSString *flag = [diction objectForKey:@"flag"];

           NSArray *temparray = [[NSArray alloc] initWithObjects:rank,country,population,flag, nil];
           [array addObject:temparray];   
       }
      [maintableView reloadData];
  }

1 个答案:

答案 0 :(得分:0)

至少,您需要在视图控制器中实现tableView:numberOfRowsInSection:和tableView:cellForRowAtIndexPath。这告诉表预计会有多少行以及表中每行的内容。下面的简单代码假设您有一个字符串数组,并且每个单元格只显示一个字符串,应该让您开始。您的具体情况听起来可能需要自定义单元设计。 This tutorial describes how to do this in a storyboard with a custom cell class

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section        
{
    return [array count]; //tell the UITableView how many are items are in the array
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  (NSIndexPath *)indexPath 
{
     //stuff to make sure iOS is reusing cells rather than creating new ones
     static NSString *MyIdentifier = @"MyReuseIdentifier";
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
     if (cell == nil) {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:MyIdentifier];
     }

     NSString *itemFromArray = [array objectAtIndex:indexPath.row]; //get the item for that cell

     cell.textLabel.text = itemFromArray; set the cell to display the text
     return cell;
}