2010-08-28 4 views
8

Sto provando a scrivere un nsdata su un file sul mio disco, ho il seguente codice e non funziona, sto facendo qualcosa di sbagliato?Scrivi NSData in un file?

Boolean result = [data writeToFile:@"/Users/aryaxt/Desktop/test2.avi" atomically:YES]; 

test2.avi non esiste, io parto dal presupposto che writeToFile creerebbe per me

+3

In una nota a margine, si dovrebbe usare 'BOOL', non' Boolean' in Objective-C. –

+4

Prova '- [NSData writeToFile: options: error'] (http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html#//apple_ref/ doc/uid/20000172-BCIICCHI) e dicci quale errore viene segnalato. –

+2

(e verificare nel debugger che i dati non siano nulli, forse anche l'immagine è nulla ;-) –

risposta

31

Provare a utilizzare:

NSError *error = nil; 
[email protected]"/Users/aryaxt/Desktop/test2.avi"; 
[data writeToFile:path options:NSDataWritingAtomic error:&error]; 
NSLog(@"Write returned error: %@", [error localizedDescription]); 

Che ti dirò perché la scrittura sta venendo a mancare.

+10

'error' deve essere esaminato solo se il metodo restituisce' NO'. Le classi di base possono inserire altri oggetti o errori falsi o persino rifiuti nell'argomento dell'errore. (Questo non vuol dire che * fanno *, ma è parte del contratto del programmatore che possono, quindi state attenti.) –

+0

Ho una domanda laterale un po 'fuori tema dai documenti: Discussione Questo metodo potrebbe non essere appropriato quando scrivere su file accessibili pubblicamente. Per scrivere in modo sicuro i dati in un luogo pubblico, utilizzare invece NSFileHandle. Per ulteriori informazioni, vedere Protezione delle operazioni sui file nella Guida alla codifica sicura. " Quindi dovrei ancora usarlo o no? – ColdSteel

+0

" file accessibili pubblicamente "Che cosa significa? – ColdSteel