¿Alguien puede explicarme cuál es el directorio de documentos en una aplicación iOS y cuándo usarlo?
Esto es lo que creo actualmente:
Para mí, parece ser una carpeta central donde el usuario puede almacenar los archivos necesarios para la aplicación.
¿Esta sería una ubicación diferente de donde Core Data almacena sus datos?
Parece que cada aplicación tiene su propio directorio de documentos.
¿Soy libre de crear un subdirectorio del directorio de documentos, como el directorio de documentos / imágenes o el directorio de documentos / videos?
ios
nsdocumentdirectory
usuario798719
fuente
fuente
Respuestas:
Su aplicación solamente (en un dispositivo sin jailbreak) se ejecuta en un entorno "sandboxed". Esto significa que solo puede acceder a archivos y directorios dentro de sus propios contenidos. Por ejemplo Documentos y Biblioteca .
Consulte la Guía de programación de aplicaciones iOS .
Para acceder al directorio Documentos de su sandbox de aplicaciones, puede usar lo siguiente:
iOS 8 y posterior, este es el método recomendado
si necesita soportar iOS 7 o anterior
Este directorio de Documentos le permite almacenar archivos y subdirectorios que su aplicación crea o puede necesitar.
Para acceder a los archivos en el directorio de la Biblioteca del uso de sandbox de sus aplicaciones (en lugar de lo
paths
anterior):fuente
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
siempre te dará el directorio correcto!Esto ha cambiado en iOS 8. Consulte la siguiente nota técnica: https://developer.apple.com/library/ios/technotes/tn2406/_index.html
La forma autorizada por Apple (del enlace de arriba) es la siguiente:
fuente
No pude encontrar el código en el documento sugerido por la respuesta aceptada, pero encontré el equivalente actualizado aquí:
Guía de programación del sistema de archivos :: Acceso a archivos y directorios »
Desalienta el uso de NSSearchPathForDirectoriesInDomain:
Aquí hay algunas otras constantes de directorio útiles para jugar. Sin duda, no todos estos son compatibles con iOS. También puede usar la función NSHomeDirectory () que:
Desde NSPathUtilities.h
Y, por último, algunos métodos convenientes en una categoría NSURL http://club15cc.com/code/ios/easy-ios-file-directory-paths-with-this-handy-nsurl-category
fuente
Swift 3 y 4 como var global:
Como extensión FileManager:
fuente
documentDirectoryURL
o simplementedocumentDirectory
confiar en el tipo. Me gusta la idea de tener un alcance estático aFileManager
través de una propiedad estática en una extensión.Además de la
Documents
carpeta, iOS también le permite guardar archivos en las carpetastemp
yLibrary
.Para obtener más información sobre cuál usar, consulte este enlace de la documentación:
fuente
Puede ser más limpio agregar una extensión a FileManager para este tipo de llamada incómoda, por orden, si nada más. Algo como:
fuente
Puede acceder al directorio de documentos utilizando este código, que se utiliza básicamente para almacenar archivos en formato plist:
fuente
Aquí hay una pequeña función útil que hace que usar / crear carpetas iOS sea un poco más fácil.
Si le pasa el nombre de una subcarpeta, le devolverá la ruta completa y se asegurará de que el directorio exista.
(Personalmente, pego esta función estática en mi clase AppDelete, pero quizás este no sea el lugar más inteligente para ponerla).
Así es como lo llamaría, para obtener la "ruta completa" de un subdirectorio MySavedImages:
Y aquí está la función completa:
Con esta pequeña función, es fácil crear un directorio en el directorio Documentos de su aplicación (si aún no existe) y escribir un archivo en él.
Así es como crearía el directorio y escribiría el contenido de uno de mis archivos de imagen en él:
Espero que esto ayude !
fuente
Al igual que otros mencionados, su aplicación se ejecuta en un entorno de espacio aislado y puede usar el directorio de documentos para almacenar imágenes u otros activos que su aplicación puede usar, por ejemplo. descarga de archivos offline-d como prefiera el usuario - Conceptos básicos del sistema de archivos - Documentación de Apple - Qué directorio usar, para almacenar archivos específicos de la aplicación
Actualizado a swift 5, puede usar una de estas funciones, según los requisitos:
Uso:
fuente