2 Stimmen

Leeres UITableView beim Parsen von JSON mit AFNetworking

Ich verwende AFNetworking, um YouTube JSON-Daten in einer UITableView zu parsen.

Aus irgendeinem Grund erhalte ich eine leere UITableView. Ich bin mir nicht sicher, was ich falsch mache.

Bitte sehen Sie sich meinen Code an:

Hier ist das Projekt auf Google Drive

#import "KKViewController.h"

#import "AFNetworking.h"

#import "AFJSONRequestOperation.h"

@interface KKViewController ()

@end

@implementation KKViewController

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Benutzerdefinierte Initialisierung
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *urlAsString = @"http://gdata.youtube.com/feeds/api/playlists/PL0l3xlkh7UnvLdr0Zz3XZZuP2tENy_qaP?v=2&alt=jsonc&max-results=50";

    NSURL *url = [NSURL URLWithString:urlAsString];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

   AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

       self.videoMetaData = [JSON valueForKeyPath:@"data.items.video"];

      // NSLog(@" video Meta Data %@", self.videoMetaData);

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
        NSLog(@"Anforderung fehlgeschlagen mit Fehler: %@, %@", error, error.userInfo);
    }];

    [operation start];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Freigabe aller Ressourcen.
}

#pragma mark - Datenquellenmethoden für die TableView

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

    // Anzahl der Sektionen zurückgeben.
    return 1;
}

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

  return [self.videoMetaData count];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellID = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
    }

    NSDictionary *titles = [self.videoMetaData objectAtIndex:indexPath.row];

    NSLog(@"%@",titles);

    cell.textLabel.text = [titles objectForKey:@"title"];

    return cell;
}

3voto

Jeffery Thomas Punkte 41299

Hast du versucht, die Tabellenansicht neu zu laden, nachdem die Daten geladen wurden?

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"JSON = %@", JSON);
    self.videoMetaData = [JSON valueForKeyPath:@"data.items.video"];
    NSLog(@" video Meta Daten %@", self.videoMetaData);
    [self.tableView reloadData]; // Jetzt muss ich die Daten der Tabellenansicht neu laden.
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
    NSLog(@"Anfrage fehlgeschlagen mit Fehler: %@, %@", error, error.userInfo);
}];

2voto

lakshmen Punkte 27002

Sie müssen [self.tableview reloadData]; ausführen. Das wird das Problem lösen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X