如何在UITableviewCell中显示Json数据

我目前正在JSON工作。 我只是使用jsp webserver 。 并使用JSON数据我想显示在我的uitableviewcell 。我尝试了一些program.But我有一些错误。

这是我的JSON

[{"result":[{"request_id":508,"ticket_number":"PA_1000508","email":"harI","user_id":6,"description":"Feed","createdTime":"10/15/2013 10:52:32 AM","status":"initiated"},{"request_id":507,"ticket_number":"PA_1000507","email":"hari","user_id":6,"description":"","createdTime":"10/15/2013 10:52:16 AM","status":"initiated"},{"request_id":505,"ticket_number":"PA_1000505","email":"hari","user_id":6,"description":"test","createdTime":"10/15/2013 10:42:26 AM","status":"initiated"},{"request_id":504,"ticket_number":"PA_1000504","email":"hari","user_id":6,"description":"desccccccccccccccccccc","createdTime":"10/15/2013 10:42:06 AM","status":"initiated"},

我想在我的uitableviewcell显示数据

这是我的示例代码。

 TotalRequest.h @interface TotalRequests : UIViewController<UITableViewDataSource,UITableViewDelegate> { NSMutableData *data; NSArray *listItems; NSURLConnection *connection; NSString *stat; IBOutlet UITableView *tableview; } TotalRequest.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.title=@"Total Requests"; NSURL *url=[NSURL URLWithString:@"http:sampleurl"]; NSURLRequest *request=[NSURLRequest requestWithURL:url]; connection=[[NSURLConnection alloc]initWithRequest:request delegate:self]; if(connection) { data=[[NSMutableData alloc]init]; } data=[[NSMutableData alloc]init]; [self performSelectorOnMainThread:@selector(fetchData) withObject:data waitUntilDone:YES]; } -(void)fetchData:(NSData *)responseData { NSError *error=nil; NSDictionary *json=[NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; NSDictionary *tRequest=[json objectForKey:@"userId"]; NSLog(@"Total Requests :%@",tRequest); if(!tRequest) { NSLog(@"Error In Json :%@",error); } else for(NSDictionary *newValue in tRequest) { NSString *tNumber=[newValue objectForKey:@"ticket_number"]; NSString *time=[newValue objectForKey:@"createdTime"]; stat=[newValue objectForKey:@"status"]; NSLog(@"ticket_number :%@",tNumber); NSLog(@"createdTime :%@",time); NSLog(@"status :%@",stat); } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } cell.textLabel.text=[[listItems objectAtIndex:indexPath.row]objectForKey:@"ticket_number"]; cell.textLabel.text=[[listItems objectAtIndex:indexPath.row]objectForKey:@"createdTime"]; cell.textLabel.text=[[listItems objectAtIndex:indexPath.row]objectForKey:@"status"]; return cell; } -(void)connection :(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { data=[[NSMutableData alloc]init]; } -(void)connection : (NSURLConnection *)connection didReceiveData:(NSData *)theData { [data appendData:theData]; } -(void)connection :(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"Error in Connection"); } 

错误消息是:

 -[TotalRequests fetchData]: unrecognized selector sent to instance 0x7162820 15:02:36.685 sampleWebservices[2897:11303]Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TotalRequests fetchData]: unrecognized selector sent to instance 0x7162820' *** First throw call stack: (0x1c99012 0x10d6e7e 0x1d244bd 0x1c88bbc 0x1c8894e 0xb15fb4 0xb15e67 0x3d45 0xfc1c7 0xfc232 0xfc4da 0x1138e5 0x1139cb 0x113c76 0x113d71 0x11489b 0x114e93 0x114a88 0x3607 0xca285 0xca4ed 0xad45b3 0x1c58376 0x1c57e06 0x1c3fa82 0x1c3ef44 0x1c3ee1b 0x1bf37e3 0x1bf3668 0x1affc 0x28bd 0x27e5) 

在TotalRequest.m中replace你的代码:

 [self performSelectorOnMainThread:@selector(fetchData) withObject:data waitUntilDone:YES]; 

有了这个:

 [self performSelectorOnMainThread:@selector(fetchData:) withObject:data waitUntilDone:YES]; 

请注意,我添加了“:”select器(fetchData)

当您使用performSelector方法并且您的方法接收到一个参数时,您必须将“:”添加到方法名称。

编辑

解决你的第一个问题后,现在出现第二个问题。 在你的接口声明中你声明你实现了UITableViewDataSource。 如果你检查苹果的文档( https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html ),你会看到有两个必要的方法: – tableView:cellForRowAtIndexPath:必需方法 – tableView:numberOfRowsInSection:所需的方法

你实现了第一个,但不是第二个。 这是一个告诉tableView在一个section中有多less行的方法。 我看到你的数据模型是“listItems”,所以你应该把这个代码添加到你的TotalRequest.m文件中:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [listItems count]; } 

我正在考虑你只有一个部分。 如果您有不同的需求,请调整此方法的逻辑。