2012-02-09 10 views
6

Ho creato alcuni file PDF programmaticamente, che io sono la memorizzazione nella memoria dei dispositivi utilizzando il seguente codice >>>>Come nascondere le cartelle create in Document Directory in 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]; 

posso vedere il file nella cartella di periferiche di stampa.

Desidero nascondere questi file in modo che l'utente non possa visualizzarli o eliminarli.

Qualcuno può aiutarmi a farlo.

+0

perché? l'utente normale non sarà in grado di vederli comunque –

+0

Forse si tratta di iTunes? – twilson

+0

Sì, se si imposta il flag di condivisione del documento in info.plist, gli utenti possono vedere tutti i file nella cartella Documenti in iTunes. In generale, non è necessario archiviare file di dati privati ​​in Documenti, che devono essere utilizzati solo per i documenti dell'utente (vedere di seguito per posizioni alternative per memorizzare i dati dell'applicazione). –

risposta

12

Un buon posto per archiviare dati privati ​​è in ~/Library/Application Support/, che è la cartella utilizzata sul Mac per questo scopo.

È possibile generare un percorso di questa cartella utilizzando:

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

Dovrete creare la cartella da soli la prima volta che lo si utilizza, che si può fare con:

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

Ho scritto una semplice libreria che rende questa e tutte le altre utili cartelle iOS disponibili come metodi su NSFileManager: https://github.com/nicklockwood/StandardPaths

+0

+1, categoria utile (e ben documentata). Una richiesta, però: sarebbe bello se avessi aggiunto commenti nel file di intestazione anche su cosa fa ogni metodo. Se qualcuno aggiunge la tua categoria al suo progetto e il suo collega lo vede, potrebbe non sapere quali sono i metodi che dovrebbero restituire o fare. – DarkDust

+0

Punto valido. In genere mi piace lasciare i miei file di intestazione se possibile, e c'è un link alla documentazione di github nel file .h, ma posso vedere un argomento per mettere i documenti nell'intestazione. –

+0

Questo percorso è privato o più applicazioni possono leggere da questa cartella? – f2prateek

3

Basta prefixare il nome file con un punto, come in .SampleTextFile.pdf.

La soluzione reale è quella di non archiviare il documento nello NSDocumentDirectory in primo luogo. Dovresti creare una sottodirectory nello NSLibraryDirectory e archiviarla qui. Inoltre viene eseguito il backup e non viene eliminato come Caches e tmp, ma l'utente non può accedervi con iTunes.

+1

ma l'utente può accedere con un software come iExplorer;) – kurtanamo

Problemi correlati