我使用AFNetworking通過YouTube視頻填充UITableView。 YouTube API只允許每個請求的最多50個結果。所以我必須使用多個URL來獲得超過50個結果。將數據從一種方法傳遞到另一種方法
我創建了一個方法,它將對給定的URL執行AFNetworkings AFJSONRequestOperation。
我認爲UITable是在我收到JSON數據之前創建的。在創建方法之前,所有的工作都完美無缺。
這是我第一次創建一個方法。在過去的幾天裏,我一直試圖在UITable上加載超過50個YouTube視頻。請看看我的代碼。
這裏是我的代碼,你也可以從
QQViewController.m下載整個項目
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
//[super viewDidLoad];
NSString *urlAsString = @"http://gdata.youtube.com/feeds/api/playlists/PL7CF5B0AC3B1EB1D5?v=2&alt=jsonc&max-results=50";
// I am not sure how i am supposed to populate the uitableview with the second link :(
NSString *urlAsString2 = @"http://gdata.youtube.com/feeds/api/playlists/PL7CF5B0AC3B1EB1D5?v=2&alt=jsonc&max-results=50&start-index=51";
self.myurl = [NSURL URLWithString:urlAsString];
[self getJSONfromURL:self.myurl];
[self.tableView reloadData];
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.videoMetaData = [self.myJSON valueForKeyPath:@"items.video"];
NSLog(@" QQVC video Meta Data %@", self.videoMetaData);
self.allThumbnails = [self.myJSON valueForKeyPath:@"data.items.video.thumbnail"];
// The table need to be reloaded or else we will get an empty table.
[self.tableView reloadData]; // Must Reload
// NSLog(@" video Meta Data %@", self.videoMetaData);
}
//這裏是法
-(void)getJSONfromURL:(NSURL *)url {
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// setup AFNetworking stuff
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
// call delegate or processing method on success
// [self.myJSON = (NSArray *)JSON];
self.myJSON = [JSON valueForKey:@"data"];
[self.tableView reloadData];
//NSLog(@" in get JSon method %@", self.myJSON);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
獲得下載後,您需要再次在表視圖上調用reloadData。 – rdelmar 2013-02-14 02:38:19
我沒有重新加載viewDidAppear – user1951876 2013-02-14 02:40:37
但這可能爲時尚早。每當您的下載方法返回時,您都需要再次執行此操作。 – rdelmar 2013-02-14 03:06:47