2013-07-18 51 views
1

在我的應用程序中,我想保存剛剛拍攝到核心數據的電影。我不希望這些電影在普通的相機膠捲中結束。我的想法是獲取剪輯並將其加載到對象的「電影」中,然後我可以將其保存到數據中。很像通訊錄中的照片。核心數據讓我們保存到外部記錄文件中,無論如何。iOS將電影從相機保存到核心數據

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    movie = [info objectForKey:UIImagePickerControllerOriginalImage]; 

但是當我去保存它時,電影顯示爲零。

NSManagedObjectContext *context = [self managedObjectContext]; 
    NSManagedObject *newMedia = [NSEntityDescription insertNewObjectForEntityForName:@"Media" inManagedObjectContext:context]; 
    [newMedia setValue:@"Video Clip " forKey:@"title"]; 
    [newMedia setValue:now forKey:@"date_time"]; 
    [newMedia setValue:movie forKey:@"movie"]; 

我希望有人能指出我正確的方向。 感謝

回答

2

你可以得到的視頻是這樣的:

NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; 
NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; 

,並保存在數據庫中的videoData,你的情況movie,只要它是在類型NSData

您的代碼:

movie = [info objectForKey:UIImagePickerControllerOriginalImage]; 

應該從imagePickerControllerUIImage你拍了一張照片後,如果你說你正在錄製那麼這就是爲什麼movie = nil;

+0

謝謝你,工作一種享受!現在,我只需從核心數據中獲取它,當我在TableView中執行SelectRow並轉到顯示拍攝日期和其他內容的詳細視圖時。 – Jorgen

+0

沒問題,很高興我可以幫忙,如果你有任何其他問題讓我知道。 – soryngod

+0

@sorynogod - 當我嘗試播放videoData時,它返回null。 ' - (IBAction)playVideoBtn:(id)sender {NSString * dataString = [[NSString alloc] initWithData:[self.media valueForKey:@「movie」] encoding:NSUTF8StringEncoding]; NSURL * movieURL = [NSURL URLWithString:dataString]; NSLog(@「播放視頻」); NSLog(@「temp dataString:%@」,dataString); NSLog(@「temp movie path:%@」,movieURL); MPMoviePlayerController * moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; [self presentMoviePlayerViewControllerAnimated:moviePlayer]; } ' – Jorgen