Estoy tratando de llenar un UITableView con los datos de resultado en json. Puedo llegar a cargar de plist matriz ningún problema y puedo ver a mi json. El problema que estoy teniendo es que el UITableView nunca llega a ver los resultados en json. por favor tengan paciencia conmigo, ya que es mi primera vez con Objective-C.

En mi .h archivo

@interface TableViewViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
    NSArray *exercises;
    NSMutableData *responseData;

}

En mi .m archivo

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return  exercises.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//create a cell
UITableViewCell *cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:@"cell"];
//fill it with contnets
cell.textLabel.text = [exercises objectAtIndex:indexPath.row];
//return it
return cell;
}
//Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {       
responseData = [[NSMutableData data] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://url_to_json"]];
[[NSURLConnection alloc] initWithRequest:request delegate:self ];
//load from plist
//NSString *myfile = [[NSBundle mainBundle] pathForResource:@"exercise" ofType:@"plist"];
//exercises = [[NSArray alloc] initWithContentsOfFile:myfile];
[super viewDidLoad];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed: %@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
NSDictionary *dictionary = [responseString JSONValue];
NSArray *response = [dictionary objectForKey:@"response"];
exercises = [[NSArray alloc] initWithArray:response];
}

OriginalEl autor mcgrailm | 2010-06-03

3 Comentarios

  1. 14

    Usted necesita decirle a su vista de tabla para volver a cargar. Trate de añadir:

    [tableView reloadData];

    al final de su -connectionDidFinishLoading método.

    Tengo un error diciendo formato tableview no es delcared ?
    Bien. Es su controlador de vista de un UITableViewController o simplemente un UIViewController? Usted necesitará una toma de corriente para su UITableView. Si su vista controlador es un UITableViewController, cambie el código de arriba a [[auto en formato tableview] reloadData]; en caso Contrario, declarar un UITableView IBOutlet en el encabezado del archivo y el nombre de formato tableview y conéctelo en el Interface Builder. A continuación, el código debería funcionar.
    ok consiguió que parte de trabajo gracias por su ayuda

    OriginalEl autor Matt Long

  2. 0

    Puede que tenga que agregar la siguiente línea de código al final de su connectionDidFinishLoading método:

    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

    Se va a actualizar el UITableView en el hilo principal ya que connectionDidFinishLoading se realiza en un subproceso diferente.

    OriginalEl autor Flea

Dejar respuesta

Please enter your comment!
Please enter your name here