2016-05-04 13 views
2

Ich habe eine Anwendung, in der Benutzer einen Dateimanager zum Erstellen, Ändern und Entfernen von Verzeichnissen und Dateien verwenden können. Ich stelle fest, dass beim Importieren von Dateien aus externen Anwendungen automatisch ein Systemordner Inbox generiert wird, der verhindert, dass Benutzer den Ordner löschen und/oder einen Ordner namens Inbox benennen. Soll ich stattdessen ein Unterverzeichnis im Pfadverzeichnis des Dokuments erstellen und der Dateimanager diesen Ordner als den Dokumentstammpfad betrachten? Wie erreichen andere Apps das?Was mache ich mit dem Posteingang-Ordner im Dokumentenverzeichnis, wenn ich möchte, dass der Benutzer Ordner und Dateien verwalten darf?

+1

Ich glaube nicht, dass es eine Best Practice dazu gibt. Tu einfach, was dir am meisten Sinn macht. Ich ignoriere einfach den Posteingang und/oder filtere ihn heraus, wenn ich eine Liste von Dateien ergreife. Die Verwendung eines Unterverzeichnisses, wie Sie es vorgeschlagen haben, wäre sicherlich auch eine gute Lösung. –

+0

@MattLong Gut verdammt. Bevor ich das Dateisystem-Design von Apple in Frage stelle, muss ich mich fragen, warum dieser Ordner im Dokumentpfad erstellt und für den App-Benutzer sichtbar gemacht wird. Entweder ein Designfehler oder es gibt eindeutig eine Art von Vorteil für die Platzierung des Posteingangs-Ordner dort, dass ich keine Ahnung von –

Antwort

4

Wenn Sie Benutzern erlauben, ihre eigenen Dokumente und Verzeichnisse im Dokumentenverzeichnis Ihrer Sandbox zu erstellen, ist es möglicherweise sinnvoll, das zu tun, was Sie vorgeschlagen haben, und ein separates Verzeichnis innerhalb von Dokumenten zu erstellen, die für vom Benutzer editierbare Daten bestimmt sind.

Fügen Sie z. B. ein 'User'-Verzeichnis in Documents hinzu und verwenden Sie es als Stammverzeichnis für Benutzerdateien und -verzeichnisse.

Apples Dokumentation besagt Folgendes über/Dokumente/Posteingang:

Verwenden Sie dieses Verzeichnis auf Dateien zuzugreifen, die Ihre App gefragt wurde durch externe Einrichtungen zu öffnen. Das E-Mail-Programm platziert speziell mit Ihrer App verknüpfte E-Mail-Anhänge in diesem Verzeichnis. Document Interaction Controller können auch Dateien darin platzieren. Ihre App kann Dateien in diesem Verzeichnis lesen und löschen, aber keine neuen Dateien erstellen oder in vorhandene Dateien schreiben. Wenn der Benutzer versucht, eine Datei in diesem Verzeichnis zu bearbeiten, muss die Anwendung diese aus dem Verzeichnis entfernen, bevor Änderungen vorgenommen werden. Der Inhalt dieses Verzeichnisses wird von iTunes gesichert.

Von der File System Programming Guide.

+0

Dies ist eine vernünftige Antwort, aber nicht die eleganteste Lösung. Ich nehme an, ich muss nur ein psuedo "chroot" jail im Verzeichnis Documents erstellen? –

+0

Ich nehme an, das ist eine Möglichkeit. Sie könnten wahrscheinlich auch eine eigene Funktion erstellen, die den Pfad oder die URL für das neue Stammverzeichnis zurückgibt und in Ihrem Code den Pfad/die URL anstelle der Systemfunktionen verwendet, die den Pfad zum Dokumentenverzeichnis zurückgeben. –

+0

Ja das habe ich gerade jetzt implementiert. Danke für deinen Beitrag. Vielleicht wird Apple das in Zukunft ansprechen. +1 für das Zitieren der Dokumentation –