Kann mir jemand erklären, was das Dokumentenverzeichnis in einer iOS-App ist und wann es verwendet werden soll?
Folgendes glaube ich derzeit:
Für mich scheint es ein zentraler Ordner zu sein, in dem der Benutzer alle für die App benötigten Dateien speichern kann.
Dies wäre ein anderer Ort als der Ort, an dem Core Data seine Daten speichert.
Anscheinend erhält jede App ein eigenes Dokumentenverzeichnis.
Es steht mir frei, ein Unterverzeichnis des Dokumentenverzeichnisses zu erstellen, z. B. Dokumentenverzeichnis / Bilder oder Dokumentenverzeichnis / Videos.
ios
nsdocumentdirectory
user798719
quelle
quelle
Antworten:
Ihre App wird nur (auf einem Gerät ohne Jailbreak) in einer "Sandbox" -Umgebung ausgeführt. Dies bedeutet, dass es nur innerhalb seines eigenen Inhalts auf Dateien und Verzeichnisse zugreifen kann. Zum Beispiel Dokumente und Bibliothek .
Weitere Informationen finden Sie im Programmierhandbuch für iOS-Anwendungen .
Um auf das Dokumentverzeichnis Ihrer Anwendungssandbox zuzugreifen , können Sie Folgendes verwenden:
iOS 8 und höher ist die empfohlene Methode
Wenn Sie iOS 7 oder früher unterstützen müssen
In diesem Dokumentverzeichnis können Sie Dateien und Unterverzeichnisse speichern, die Ihre App erstellt oder möglicherweise benötigt.
Um auf Dateien im Bibliotheksverzeichnis Ihrer Apps-Sandbox zuzugreifen, verwenden Sie (anstelle der
paths
oben genannten):quelle
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
gibt dir immer das richtige Verzeichnis!Dies hat sich in iOS 8 geändert. Siehe den folgenden technischen Hinweis: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
Der von Apple genehmigte Weg (über den obigen Link) lautet wie folgt:
quelle
Ich konnte den Code in dem von der akzeptierten Antwort vorgeschlagenen Dokument nicht finden, aber ich habe das aktualisierte Äquivalent hier gefunden:
Programmierhandbuch für Dateisysteme :: Zugriff auf Dateien und Verzeichnisse »
Es wird davon abgeraten, NSSearchPathForDirectoriesInDomain zu verwenden:
Hier sind einige andere nützliche Verzeichniskonstanten, mit denen Sie spielen können. Zweifellos werden nicht alle von diesen in iOS unterstützt. Sie können auch die Funktion NSHomeDirectory () verwenden, die:
Von NSPathUtilities.h
Und schließlich einige praktische Methoden in einer NSURL-Kategorie: http://club15cc.com/code/ios/easy-ios-file-directory-paths-with-this-handy-nsurl-category
quelle
Swift 3 und 4 als globale Variable:
Als FileManager-Erweiterung:
quelle
documentDirectoryURL
oder sich einfachdocumentDirectory
auf den Typ verlassen. Ich mag die Idee, es statisch aufFileManager
eine statische Eigenschaft in einer Erweiterung abzustimmen.Neben dem
Documents
Ordner können Sie mit iOS auch Dateien in den Ordnerntemp
und speichernLibrary
.Weitere Informationen zur Verwendung finden Sie unter diesem Link in der Dokumentation:
quelle
Es kann sauberer sein, FileManager eine Erweiterung für diese Art von umständlichem Aufruf hinzuzufügen, für Ordnung, wenn nichts anderes. Etwas wie:
quelle
Mit diesem Code können Sie auf das Dokumentenverzeichnis zugreifen. Es wird im Wesentlichen zum Speichern von Dateien im Plist-Format verwendet:
quelle
Hier ist eine nützliche kleine Funktion, die das Verwenden / Erstellen von iOS-Ordnern etwas erleichtert.
Wenn Sie ihm den Namen eines Unterordners übergeben, wird der vollständige Pfad an Sie zurückgegeben, und Sie stellen sicher, dass das Verzeichnis vorhanden ist.
(Persönlich stecke ich diese statische Funktion in meine AppDelete-Klasse, aber vielleicht ist dies nicht der klügste Ort, um sie auszudrücken.)
So würden Sie es nennen, um den "vollständigen Pfad" eines MySavedImages-Unterverzeichnisses abzurufen:
Und hier ist die volle Funktion:
Mit dieser kleinen Funktion ist es einfach, ein Verzeichnis im Dokumentverzeichnis Ihrer App zu erstellen (falls es noch nicht vorhanden ist) und eine Datei darin zu schreiben.
So würde ich das Verzeichnis erstellen und den Inhalt einer meiner Bilddateien in das Verzeichnis schreiben:
Hoffe das hilft !
quelle
Wie bereits erwähnt, wird Ihre App in einer Sandbox-Umgebung ausgeführt und Sie können das Dokumentenverzeichnis verwenden, um Bilder oder andere Elemente zu speichern, die Ihre App möglicherweise verwendet, z. Herunterladen von Offline-d-Dateien nach Benutzerwunsch - Grundlagen des Dateisystems - Apple-Dokumentation - Welches Verzeichnis zum Speichern anwendungsspezifischer Dateien verwendet werden soll
Auf Swift 5 aktualisiert, können Sie je nach Anforderung eine dieser Funktionen verwenden -
Verwendung:
quelle