2017-04-04 34 views
0

我已经使用下面的代码将JSON数据(来自SOAP服务)转换为NSDictionary如何将NSDictionary数据绑定到目标c中的表视图?

-(void)retriveFromSYSoapTool:(NSMutableArray *)_data{ 
    NSLog(@"data: %@",_data); 
    NSArray *value = [_data valueForKey:@"GetDemoDataResult"]; 
    NSError *error; 
    NSData *objData = [value[0] dataUsingEncoding:NSUTF8StringEncoding]; 
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objData options:NSJSONReadingMutableContainers error:&error]; 
    NSLog(@"%@",json); 
} 

输出

2017-04-04 13:03:51.085 SoapService[18444:588594] (
     { 
     firstName = "1 Jhon"; 
     lastName = Macay; 
    }, 
     { 
     firstName = "2 William"; 
     lastName = Proter; 
    }, 
     { 
     firstName = "3 Joe"; 
     lastName = Root; 
    }, 
     { 
     firstName = "4 Brendon"; 
     lastName = Haejoy; 
    }, 
     { 
     firstName = "5 Jhon"; 
     lastName = Snow; 
    }, 
     { 
     firstName = "6 Theon"; 
     lastName = Greyjoy; 
    } 
) 

我需要将其转换为任何其他?或者我如何在UITable视图中绑定上述输出?

+0

的NSDictionary没有顺序,因此追加你的字典来数组,然后在tableview中加载数组,最后访问你的字符串ike cell.textlabel.text = yourarrayname [indexpath.row] [@“f irstName“]; –

+1

我相信你的JSON实际上是一个数组,而不是一本字典。您可以通过使用调试器检查json来检查,也可以通过记录对象的类来检查。将它分配给一个'NSArray *',然后在你的tableview数据源中使用它。 – jcaron

回答

0

它应该是这样的

在.h文件中声明jsonArray

@property (strong, nonatomic) NSMutableArray *jsonArray; 

添加以下线的viewDidLoad

self.jsonArray = [[NSMutableArray alloc]init]; 


-(void)retriveFromSYSoapTool:(NSMutableArray *)_data{ 

    NSLog(@"data: %@",_data); 

    NSArray *value = [_data valueForKey:@"GetDemoDataResult"]; 

    NSError *error; 

    NSData *objData = [value[0] dataUsingEncoding:NSUTF8StringEncoding]; 

    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objData options:NSJSONReadingMutableContainers error:&error]; 

    NSLog(@"%@",son); 

    [self.jsonArray addObject:[[json objectForKey:@"firstname"]stringByAppendingString:[json objectForKey:@"lastname"]]; 

    [tableViewName reloadData]; 

} 

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

return self.jsonArray.count; 

} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{ 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 

if (cell == nil) { 

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 

} 

cell.textLabel.text = [self.jsonArray objectAtIndex:indexPath.row]; 

    return cell; 
} 
0
  1. 采取一个NSMutuableArray并添加dictionaryarray

    NSMutableArray *array = [[NSMutableArray alloc] init]; 
    
    [array addObject: json]; 
    
    //Than Reload Tableview 
    
    Note: Declare array Globally to access in your class 
    
  2. tableview显示数据,如

    cell.label.text = [[array objectAtIndex:indexPath.row]valueForKey:@"firstName"]; 
    
2

要使用表格视图工作,你需要阵列

结帐this简单的表视图教程

0

商店JSON数据为全球声明的NSArray

-(void)retriveFromSYSoapTool:(NSMutableArray *)_data{ 
    NSLog(@"data: %@",_data); 
    NSArray *value = [_data valueForKey:@"GetDemoDataResult"]; 
    NSError *error; 
    NSData *objData = [value[0] dataUsingEncoding:NSUTF8StringEncoding]; 
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:objData options:NSJSONReadingMutableContainers error:&error]; 
    NSLog(@"%@",json); 
    DataArray = [NSArray arrayWithObjects:json, nil]; 
    [tableView reloadData]; 
} 

这里DataArray中是全局声明的NSArray对象;

现在编写UITableView DataSource方法。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    return DataArray.count; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"jsoncell" forIndexPath:indexPath]; 
    NSDictionary *dict = DataArray[indexPath.row]; 
    NSString *output = [NSString stringWithFormat:@"%@ %@",dict[@"firstName"],dict[@"lastName"]]; 
    cell.textLabel.text = output; 
    return cell; 

} 
+0

这是错误的'DataArray = json;' –

相关问题