Использование Parse.com чтобы загрузить видео
Я новичок в синтаксическом анализе и пытаюсь сохранить и загрузить видео в облако. Это код, который я использую, но он продолжает получать ошибку, когда вызывается doneButtonAction. Я считаю, что проблема заключается в том, что видео сохраняется в виде файла, но я понятия не имею, как это исправить. Заранее благодарю вас -
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"%@", videoURL);
if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (self.moviePath))
{
UISaveVideoAtPathToSavedPhotosAlbum (self.moviePath, nil, nil, nil);
}
[self shouldUploadVideo];
[self doneButtonAction];
}
- (void)shouldUploadVideo {
//Capturamos el NSUserdefault para grabar el evento
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *loadstring = [defaults objectForKey:@"Video"];
NSLog(@"Working at first line");
NSData *videoData = [NSData dataWithContentsOfURL:self.videoURL];
NSLog(@"Working at second line");
PFFile *videoFile = [PFFile fileWithData:videoData];
NSLog(@"Working at third line");
[self.videoFile saveInBackground];
NSLog(@"Working at last line");
}
- (void)doneButtonAction {
// Make sure there was no errors creating the image files
if (!self.videoFile) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Couldn't save your photo"
message:nil
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Dismiss",nil];
[alert show];
return;
}
// Create a Photo object
PFObject *video = [PFObject objectWithClassName:kPAPPhotoClassKey];
[video setObject:[PFUser currentUser] forKey:kPAPPhotoUserKey];
[video setObject:self.videoFile forKey:@"Video"];
// Request a background execution task to allow us to finish uploading
// the photo even if the app is sent to the background
self.photoPostBackgroundTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.photoPostBackgroundTaskId];
}];
// Save the Photo PFObject
[video saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (succeeded) {
NSLog(@"Photo uploaded");
// Add the photo to the local cache
[[PAPCache sharedCache] setAttributesForPhoto:video likers:[NSArray array] commenters:[NSArray array] likedByCurrentUser:NO];
// Send a notification. The main timeline will refresh itself when caught
[[NSNotificationCenter defaultCenter] postNotificationName:PAPTabBarControllerDidFinishEditingPhotoNotification object:video];
} else {
NSLog(@"Photo failed to save: %@", error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Couldn't post your photo"
message:nil
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Dismiss",nil];
[alert show];
}
// If we are currently in the background, suspend the app, otherwise
// cancel request for background processing.
[[UIApplication sharedApplication] endBackgroundTask:self.photoPostBackgroundTaskId];
}];
// Dismiss this screen
[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
}
1 ответ:
Внутри
- (void)shouldUploadVideo {
У вас есть:
PFFile *videoFile = [PFFile fileWithData:videoData]; NSLog(@"Working at third line"); [self.videoFile saveInBackground]; NSLog(@"Working at last line");
Вы пытаетесь загрузить себя.видеофайл в фоновом режиме-не видеофайл.
Это означает, что видеофайл не загружает файл PFF в фоновом режиме.
Изменение
PFFile *videoFile = [PFFile fileWithData:videoData];
К
self.videoFile = [PFFile fileWithData:videoData];