2011-10-27 5 views
5

Ho un'applicazione in cui registro un video. Ma quando la registrazione è finita, non posso salvare immediatamente il video. Devo prima mostrare un accordo. Così provo a salvare l'URL che ottengo dal selettore di immagini. E salva il video nella libreria più tardi. Questo ha funzionato bene in iOS4, ma non in iOS5. Sono nuovo per iOS e Objective-C quindi probabilmente ho fatto alcune dichiarazioni totalmente errate della proprietà che dovrebbe contenere l'URL.Archiviazione dell'URL video registrato per il salvataggio nella libreria più avanti

Si tratta di una parte del codice:

.h

#import <UIKit/UIKit.h> 
#import <AssetsLibrary/AssetsLibrary.h> 


@interface Video_recViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate> { 

NSURL *tempMoviePath; 

} 


@property (nonatomic, retain) NSURL *tempMoviePath; 

.m

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

NSURL *moviePath = [info objectForKey:UIImagePickerControllerMediaURL]; 
[self dismissModalViewControllerAnimated: YES]; 
NSLog(@"path from image picker: %@", moviePath); 
tempMoviePath = moviePath; 
NSLog(@"temp movie path: %@", tempMoviePath); 
// 
[self performSelector:@selector(showAgree) withObject:nil afterDelay:0.5]; 

} 

- (void)userAgreed { 
NSLog(@"user agreed"); 
//NSLog(@"temp movie path: %@", tempMoviePath); 
[self saveMyVideo:tempMoviePath]; 
//[self performSelector:@selector(showSurvey) withObject:nil afterDelay:0.5]; 
} 

- (void)saveMyVideo:(NSURL *)videoURL { 

NSLog(@"saving movie at: %@", videoURL); 

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:videoURL]) 
{ 
    [library writeVideoAtPathToSavedPhotosAlbum:videoURL 
           completionBlock:^(NSURL *assetURL, NSError *error){} 
    ]; 
} 
[library release]; 

} 

uscita dal registro quando didFinishPickingMediaWithInfo è:

temp movie path: file://localhost/private/var/mobile/Applications/8CFD1CB7-70A0-465C-B730-817ACE5A4F78/tmp/capture-T0x119660.tmp.hNFzkY/capturedvideo.MOV 

uscita dalla registrati quando d oing "saveMyVideo". L'URL si è improvvisamente trasformato in questo !! :

saving movie at: (
"0.31269", 
"0.32899", 
"0.63999", 
"0.33001", 
"0.3", 
"0.6", 
"0.15", 
"0.05999" 
) 

risposta

0

(. Risponde l'OP in una modifica domanda Vedi Question with no answers, but issue solved in the comments (or extended in chat))

Il PO ha scritto:

Il codice errato era:

tempMoviePath = moviePath; 

Perché sto impostando una proprietà dichiarata, devo u Se il set & ottieni metodi. Dovrebbe essere:

[self setTempMoviePath:moviePath]; 

A quanto pare iOS 4 non era così duro su questo, ma iOS5 non è in grado di gestirlo. Ma, comunque, era sbagliato scrivere così. Ammetto il mio errore. :)