2012-02-09 15 views
6

He creado algunos archivos PDF mediante programación, que estoy almacenar en la memoria de los dispositivos usando el siguiente código >>>>¿Cómo ocultar las carpetas creadas en Document Directory en ios?

NSString *fileName = [NSString stringWithFormat:@"SampleTextFile.pdf",strFinalString]; 

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *saveDirectory = [path objectAtIndex:0]; 
    NSString *saveFileName = fileName; 
    NSString *documentPath = [saveDirectory stringByAppendingPathComponent:saveFileName]; 

puedo ver el archivo en la carpeta Dispositivos de documentos.

Quiero ocultar estos archivos para que el usuario no pueda verlos ni eliminarlos.

¿Alguien me puede ayudar a hacer esto.

+0

¿por qué? el usuario normal no podrá verlos de todos modos –

+0

¿Quizás quieren decir desde dentro de iTunes? – twilson

+0

Sí, si configura el indicador para compartir documentos en info.plist, los usuarios pueden ver cualquier archivo en la carpeta Documentos en iTunes. Por lo general, no debe almacenar archivos de datos privados en Documentos, que solo deben usarse para documentos de usuario (consulte a continuación ubicaciones alternativas para almacenar datos de aplicaciones). –

Respuesta

12

Un buen lugar para almacenar datos privados está en ~/Library/Application Support/, que es la carpeta utilizada en la Mac para este propósito.

Puede generar una ruta a esta carpeta usando:

NSString *appSupportDir = [NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) firstObject]; 

Vas a tener que crear la carpeta sí mismo la primera vez que lo usa, lo que se puede hacer con:

if (![[NSFileManager defaultManager] fileExistsAtPath:appSupportDir]) 
{ 
    [[NSFileManager defaultManager] createDirectoryAtPath:appSupportDir withIntermediateDirectories:YES attributes:nil error:NULL]; 
} 

Escribí una biblioteca simple que hace que esta y todas las demás carpetas iOS útiles estén disponibles como métodos en NSFileManager: https://github.com/nicklockwood/StandardPaths

+0

+1, categoría útil (y muy bien documentada). Una solicitud, sin embargo: sería bueno si agregara comentarios en el archivo de encabezado también sobre lo que hace cada método. Si alguien agrega su categoría a su proyecto y su colega lo ve, es posible que no sepa lo que los métodos deben devolver o hacer. – DarkDust

+0

Punto válido. Generalmente, me gusta dejar despejados mis archivos de encabezado si es posible, y hay un enlace a la documentación de github en el archivo .h, pero puedo ver un argumento para poner documentos en el encabezado. –

+0

¿Es esta ruta privada o pueden leerse varias aplicaciones desde esta carpeta? – f2prateek

3

Simplemente prefija el nombre del archivo con un punto, como en .SampleTextFile.pdf.

Pero la solución real consiste en no almacenar el documento en el NSDocumentDirectory en primer lugar. Debería crear un subdirectorio en el NSLibraryDirectory y almacenarlo allí. También se respalda y no se purgará como Caches y tmp, pero el usuario no puede acceder a él con iTunes.

+1

pero el usuario puede acceder con software como iExplorer;) – kurtanamo

Cuestiones relacionadas