iCarousel ビューを作成し、各「セル」/ビューにビデオ プレビューを表示しようとしています。
ビデオをParseに保存していて、しようとしています
- クラウドからのクエリ
- PFFile からデータを取得する
- データを URL に変換する
- AVPlayer を使用して URL を再生する
これまでの私のコードはここにあります。
-(void)getPast{
dataArray = [[NSMutableArray alloc]init];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
PFQuery *query = [PFQuery queryWithClassName:@"History"];
[query whereKey:@"Location" containsString:[defaults objectForKey:@"location"]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
pastArray = [NSMutableArray arrayWithArray:objects];
for (PFObject *files in objects){
PFFile *file = [files objectForKey:@"File"];
[file getDataInBackgroundWithBlock:^(NSData *data, NSError *error) {
[dataArray addObject:data];
}];
}
[self.carouselView reloadData];
}];
}
dataArray が空であるというエラーが表示されます。ここでの問題は、バックグラウンドでクエリを実行しているため、データを受信する前に For ループが終了しているため、配列が空である可能性があることです。間違っていて、正しかったとしてもこれを修正する方法がわかりません。
プレビュー表示のコード
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view {
PFObject *object = [pastArray objectAtIndex:index];
NSData *data = [dataArray objectAtIndex:index];
NSString *dataString = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSURL *URL = [NSURL URLWithString:dataString];
NSLog(@"URL %@",URL);
view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 275)];
self.playerViewController = [[AVPlayerViewController alloc]init];
self.playerViewController.player = [AVPlayer playerWithURL:URL];
self.playerViewController.view.frame = view.bounds;
self.playerViewController.showsPlaybackControls = NO;
[view addSubview:self.playerViewController.view];
view.autoresizesSubviews = YES;
self.playerViewController.player.actionAtItemEnd = AVPlayerActionAtItemEndNone;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.playerViewController.player.currentItem];
[self.playerViewController.player play];
return view;
}
各ビューが配列内のインデックスに対応する PFFile ビデオを自動再生するようにコードを修正するにはどうすればよいですか。
私の問題: 配列が空です
ビューごとのコンテンツの再生が機能しない
Ps。私は PFObject *object を使用していないことを認識しています。