Cómo saber un file se escribe a través de NSFileManager

Tengo un problema, ¿Cómo saber que el file es accesible?

Por ejemplo, el file está escribiendo, pero aún no termina. Y reviso el file nuevamente,

yo suelo

[[NSFileManager defaultManager] fileExistsAtPath:filePath]; 

Devuelve verdadero … pero el file no es accesible.

¿Cómo determinar que el file está listo?

Gracias

Webber

EDITAR Quizás no estoy diciendo mi problema con claridad. Es decir, si comienzas a transportar un file de video. antes del final del transporte. el file de video no es accesible, pero aún puede get una parte del file de transporte.

NSFileCoordinator y NSFilePresenter se crean solo para eso. Puede encontrar un interesante video de almacenamiento avanzado de documentos de iCloud de wwdc que cubra el uso de estas classs. La construcción de una aplicación basada en documentos será excelente también.

Escriba datos de manera asíncrona utilizando el concepto de GCD y, una vez que se complete, se ejecutará el manejador de finalización (donde se detectará la finalización de un process de escritura)

La API de conveniencia de E / S de envío le permite realizar operaciones de lectura y escritura asíncronas en descriptores de file. Esta API admite semántica basada en secuencias para acceder al contenido del descriptor de file.

Método:

 void dispatch_write ( dispatch_fd_t fd, dispatch_data_t data, dispatch_queue_t queue, void (^handler)(dispatch_data_t data, int error) ); 

Ref: https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/index.html#//apple_ref/c/func/dispatch_write

Básicamente, necesita verificar los attributes del file y el atributo particular NSFileBusy :

 if ([fileManager fileExistsAtPath:filePath]) { NSDictionary *attributes = [fileManager attributesOfItemAtPath:filePath error:nil]; NSLog(@"File Busy %@", [attributes objectForKey:NSFileBusy]); } 

Intenta get datos del file usando el siguiente código:

 NSURL *url = [NSURL fileURLWithPath:filePath]; NSData *readData = [NSData dataWithContentsOfURL:url];