Я создал iCarousel View и пытаюсь отобразить предварительный просмотр видео в каждой ячейке/представлении.Создание предварительного просмотра видео на iCarousel с использованием PFFiles из Parse IOS
У меня есть видео, хранящиеся в синтаксический анализ и пытаюсь
- запроса из облака
- Получить данные из PFFile
- Преобразование данных в URL
- Play URL с помощью AVPlayer
Здесь мой код пока.
-(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];
}];
}
Im получаю ошибку о том, что мой DataArray пуст, Я думаю, что проблема здесь может быть, так как я запрашивая в фоновом режиме, цикл заканчивает прежде, чем я получил данные и, следовательно, массив пуст, хотя я могу ошибаться, и я не знаю, как это исправить, даже если бы я был прав.
Код для отображения предварительного просмотра
- (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, соответствующий индексу в массиве.
Мои проблемы: массив пуст
Воспроизведение содержимого для каждого вида не работает
Пс. Im знает, что я не использую объект PFObject *.
Как показать видео в окне предварительного просмотра, хотя? Для меня либо я ничего не получаю, ни кнопка воспроизведения с строкой. Как я могу преобразовать данные в URL-адрес и получить каждое представление, воспроизводящее его конкретное видео? Благодаря! – huddie96
вы сказали, что ваша проблема была пустым массивом, и теперь вы задаете другую проблему, вы должны задать новый вопрос или обновить свой текущий вопрос с дополнительной информацией. –
Мой вопрос: «Как я могу исправить свой код, чтобы каждый просмотр автоматически запускал PFFile видео, соответствующее его индексу в массиве ». У меня было две проблемы с массивом, которые, как я думал, я знал о проблеме, и я не знал, как ее преобразовать в URL-адрес, который можно было бы воспроизвести в AVPlayer – huddie96