2012-10-07 4 views
5

Sto leggendo sul sandbox delle applicazioni Mac e mi sto chiedendo cosa succede esattamente quando un utente seleziona una cartella in un NSOpenPanel o NSSavePanel. Il “App Sandbox Design Guide” fornisce il seguente esempio:A cosa accede l'app sandbox di Mac quando l'utente seleziona una cartella?

When a user of your app specifies they want to use a file or a folder, the system adds the associated path to your app’s sandbox. Say, for example, a user drags the ~/Documents folder onto your app’s Dock tile (or onto your app’s Finder icon, or into an open window of your app), thereby indicating they want to use that folder. In response, the system makes the ~/Documents folder, its contents, and its subfolders available to your app.

Non è chiaro per me ciò che si intende con i “contenuti” qui. Questo è limitato a vedere quali file sono nella cartella senza poter leggere cosa c'è in quei file? Oppure significa semplicemente che l'app sarà in grado di leggere qualsiasi file (ricorsivamente) all'interno della cartella Documenti (in questo modo, ad esempio, può leggere sia ~/Documents/Foo.txt sia ~/Documents/Bar/Baz.txt)? E che dire delle operazioni di scrittura (scrivere su un file esistente, cancellarne uno o creare un nuovo file o cartella)?

risposta

5

L'app può leggere tutti i file nella cartella selezionata e le relative sottocartelle. Lo stesso vale per la scrittura, sia per i nuovi file, sia per la sovrascrittura di quelli esistenti. È anche possibile eliminare, così come la creazione di nuove cartelle, lo spostamento della cartella all'interno dei limiti della cartella (o altre cartelle per le quali si dispone dei diritti necessari).

In poche parole, si ha la libertà di fare tutto ciò che si desidera all'interno di questa cartella e delle sue sottocartelle.

Caveat: Quando il pannello si apre e si vede salvare Documents come bersaglio, potrebbe essere ~/Library/Containers/<app signature>/Data/Documents. È possibile modificare la posizione, ma la prima volta che sono stato sconcertato dopo che il file è stato salvato con successo ma non si trovava a ~/Documents.

+1

Inoltre, se sono abilitate le autorizzazioni ai segnalibri, è possibile utilizzare - [NSURL bookmarkDataWithOptions: includingResourceValuesForKeys: relativeToURL: error:] per salvare queste autorizzazioni per un secondo momento. Vedere https://developer.apple.com/library/mac/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16. – AriX