Documents Directory: qué es, propósito y acceso a archivos

Autor: IT Sectr Publicado: 2026-07-10 Tiempo de lectura: 10 min

Documents Directory es un directorio dentro del sandbox de una aplicación iOS diseñado para almacenar datos del usuario que deben persistir entre sesiones de la aplicación y ser accesibles al usuario a través de iTunes File Sharing e iCloud. Según Apple File System Programming Guide (2024), el contenido de este directorio se incluye automáticamente en las copias de seguridad de iCloud e iTunes, por lo que el desarrollador debe elegir conscientemente qué datos colocar en Documents. A diferencia de Caches Directory, los archivos en Documents no son eliminados por el sistema cuando falta espacio — la responsabilidad de gestionar el tamaño recae en la aplicación.

Puntos clave

  • Documents Directory es el directorio principal para archivos de usuario que deben persistir y ser accesibles a través de iTunes.
  • Los datos de Documents se respaldan automáticamente en iCloud e iTunes — tenlo en cuenta al diseñar tu almacenamiento.
  • El sistema no elimina archivos de Documents al limpiar la caché — el desarrollador es responsable de liberar espacio.
  • La ruta al directorio se obtiene a través de NSSearchPathForDirectoriesInDomains con NSDocumentDirectory o mediante FileManager.urls.
  • Para archivos grandes que se pueden recuperar, usa Caches Directory — para no desperdiciar espacio en la copia de seguridad de iCloud.

¿Qué es Documents Directory en iOS?

Documents Directory es un directorio dentro del sandbox de una aplicación iOS diseñado para almacenar datos del usuario que deben persistir entre sesiones y ser accesibles al usuario. Cada aplicación tiene su propio sandbox aislado, y Documents es uno de los directorios clave junto con Caches, tmp y Library.

iOS utiliza un sandbox estricto: una aplicación no tiene acceso al sistema de archivos de otras aplicaciones ni a directorios del sistema sin permisos especiales. Documents Directory es el único directorio cuyo contenido el usuario puede ver a través de iTunes File Sharing (cuando la clave UIFileSharingEnabled está activada en Info.plist).

Según Apple WWDC 2023, más del 85% de las aplicaciones en App Store usan Documents Directory para almacenar al menos un tipo de dato de usuario — desde PDF exportados hasta archivos de juego guardados e imágenes exportadas.

Es importante que el desarrollador entienda: los archivos en Documents se incluyen automáticamente en las copias de seguridad de iCloud e iTunes. Si una aplicación almacena grandes volúmenes de datos recuperables en Documents (por ejemplo, caché de imágenes o archivos temporales), esto conlleva un consumo innecesario del espacio de iCloud del usuario.

Cómo obtener la ruta a Documents Directory

En Swift, la ruta a Documents Directory se obtiene a través de FileManager. Apple recomienda usar la API basada en URL en lugar de la basada en cadenas para una mejor compatibilidad con las capacidades modernas de iOS.

swift
import Foundation

let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

// Crear archivo en Documents
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

Objective-C usa NSSearchPathForDirectoriesInDomains — un enfoque más antiguo pero aún compatible que devuelve una ruta de cadena en lugar de una URL.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSDocumentDirectory,
    NSUserDomainMask,
    YES
);
NSString *documentsPath = paths.firstObject;
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"report.pdf"];

Los proyectos modernos en Swift deben usar FileManager.urls, ya que este método devuelve una URL en lugar de una cadena, lo que reduce el riesgo de errores de codificación de rutas y hace que el código sea más seguro en cuanto a tipos.

Qué datos almacenar en Documents

Documents Directory está destinado a datos creados por el usuario o explícitamente necesarios para el usuario. Apple destaca varias categorías que son apropiadas para este directorio.

Documentos y archivos del usuario

Archivos que el usuario crea o importa — documentos de texto, PDF, imágenes, informes exportados, archivos de copia de seguridad. Estos datos tienen valor directo para el usuario y su pérdida sería crítica.

Partidas guardadas y estado de la aplicación

Partidas guardadas de juegos, archivos de estado de la aplicación, proyectos exportados — todo lo que el usuario espera restaurar después de reinstalar la aplicación. Sin embargo, para datos críticos se recomienda adicionalmente usar iCloud Key-Value Storage o Core Data con sincronización de iCloud.

Tipo de datoAdecuado para DocumentsAlternativa
PDF y documentos de texto
Caché de imágenesNoCaches Directory
Partidas guardadasiCloud KVS
Registros y datos de depuraciónNoCaches o tmp
Informes exportados

El criterio clave: si los datos se pueden descargar de nuevo desde la red o se pueden recrear — su lugar está en Caches, no en Documents. Cada gigabyte en Documents es un gigabyte en la copia de seguridad de iCloud del usuario.

Copia de seguridad y sincronización

iOS incluye automáticamente el contenido de Documents Directory en las copias de seguridad cuando el dispositivo se conecta a iTunes o al sincronizar con iCloud. Este comportamiento no se puede desactivar a nivel de directorio — solo por archivo mediante el atributo NSURLIsExcludedFromBackupKey.

A partir de iOS 5.0, Apple comenzó a rechazar aplicaciones que almacenan grandes volúmenes de datos recuperables en Documents. La recomendación de Apple: los archivos que se pueden descargar de nuevo deben almacenarse en Caches Directory con la bandera de exclusión de copia de seguridad.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

// Excluir archivo de la copia de seguridad de iCloud
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

var fileURL = documentsURL.appendingPathComponent("cached_data.json")
try fileURL.setResourceValues(resourceValues)

La sincronización de iCloud funciona a través de NSUbiquitousContainer si la aplicación usa iCloud Documents. En este caso, los archivos de Documents Directory se sincronizan automáticamente entre los dispositivos del usuario. Para aplicaciones sin iCloud, la sincronización se limita a la copia de seguridad.

Documents Directory vs Caches Directory

La diferencia entre Documents y Caches es uno de los conceptos erróneos más comunes entre los desarrolladores principiantes de iOS. La diferencia principal: el sistema puede eliminar archivos de Caches en cualquier momento para liberar espacio, pero nunca toca Documents sin el conocimiento del usuario.

CaracterísticaDocuments DirectoryCaches Directory
Copia de seguridad iCloudSí (por defecto)No
Eliminación por el sistemaNuncaCuando falta espacio
iTunes File SharingSí (con bandera activada)No
PropósitoDatos del usuarioCaché, datos temporales
Recuperación de datosRequiere restauraciónSe puede redescargar

Según Apple Developer Documentation (2024), el uso incorrecto de Documents Directory es una de las razones comunes de rechazo de aplicaciones durante la revisión: si una aplicación almacena más de unos pocos megabytes de datos recuperables en Documents, Apple recomienda moverlos a Caches o aplicar NSURLIsExcludedFromBackupKey.

Una regla práctica: si el usuario se molestaría por perder el archivo — guárdalo en Documents. Si el archivo se puede descargar de nuevo o regenerar — guárdalo en Caches.

Mejores prácticas para trabajar con Documents

Los desarrolladores experimentados de iOS han desarrollado varias reglas que ayudan a evitar problemas con Documents Directory en todas las etapas del ciclo de vida de la aplicación — desde el desarrollo hasta la publicación en App Store.

Monitoreo del tamaño del directorio

Regularmente verifica el tamaño de Documents Directory a través de FileManager.enumerator(at:includingPropertiesForKeys:). Si el tamaño supera los 100 MB para datos no pertenecientes al usuario — es motivo para reconsiderar la arquitectura de almacenamiento.

Exclusión de archivos recuperables de la copia de seguridad

Para cualquier archivo que se pueda descargar de nuevo, establece isExcludedFromBackup = true. Esto reduce la carga en el almacenamiento de iCloud del usuario y disminuye el riesgo de rechazo en App Review.

Migración durante actualizaciones

Al cambiar el formato de datos en Documents, planifica la migración: no elimines archivos antiguos hasta que estés seguro de que los nuevos se han creado correctamente. Usa subdirectorios específicos de versión.

swift
import Foundation

let documentsURL = FileManager.default
    .urls(for: .documentDirectory, in: .userDomainMask)
    .first!

let versionDir = documentsURL.appendingPathComponent("v2")
try FileManager.default.createDirectory(
    at: versionDir,
    withIntermediateDirectories: true
)

Seguir estas prácticas reduce el riesgo de pérdida de datos del usuario, disminuye el tamaño de la copia de seguridad de iCloud y simplifica la revisión en App Store.

Preguntas frecuentes

¿Puede un usuario acceder a Documents Directory sin iTunes?

Sí, a través de Files — la aplicación integrada de iOS a partir de la versión 11. Cuando la clave UIFileSharingEnabled está activada en Info.plist, el contenido de Documents Directory aparece en la aplicación Archivos en la sección "En mi iPhone". El usuario puede ver, copiar y eliminar archivos.

¿Qué sucede con Documents Directory cuando se elimina la aplicación?

Todo el sandbox de la aplicación, incluyendo Documents Directory, Caches, tmp y Library, se elimina completamente del dispositivo. Las copias de seguridad de iCloud se conservan hasta la restauración o eliminación manual. Al reinstalar, la aplicación comienza con un sandbox limpio.

¿Cómo verificar el tamaño de Documents Directory en código?

Usa FileManager.enumerator para recorrer todos los archivos en el directorio y sumar sus tamaños. Para cada archivo, obtén el atributo .fileSize a través de resourceValues(forKeys:). Alternativamente, usa URLResourceKey.fileSizeKey y .directoryEnumerationResults.

¿Puedo almacenar una base de datos SQLite de Core Data en Documents?

Por defecto, Core Data crea el archivo SQLite en Library/Application Support, no en Documents. No se recomienda mover la base de datos a Documents — se incluirá en iTunes File Sharing y el usuario podría eliminarla o modificarla accidentalmente. La excepción es si la aplicación da explícitamente acceso al usuario a los datos a través de Core Data.

¿Qué es UIFileSharingEnabled y cómo habilitarlo?

UIFileSharingEnabled (Application supports iTunes file sharing) es una clave booleana en Info.plist. Al establecerla en YES, los usuarios pueden copiar archivos de Documents Directory a través de iTunes y Files. Añade la clave a Info.plist: UIFileSharingEnabled = YES. Actívala solo si la aplicación realmente crea documentos de usuario.

Resumen

  • Documents Directory es el lugar principal para los datos del usuario en una aplicación iOS que deben persistir y respaldarse.
  • La ruta al directorio se obtiene a través de FileManager.urls(for: .documentDirectory) en Swift o NSSearchPathForDirectoriesInDomains en Objective-C.
  • Todos los archivos de Documents se incluyen en las copias de seguridad de iCloud e iTunes por defecto — usa isExcludedFromBackup para excluirlos.
  • El sistema no elimina archivos de Documents automáticamente, a diferencia de Caches Directory.
  • Para datos recuperables (caché, archivos temporales) usa Caches Directory, no Documents.
  • La clave UIFileSharingEnabled proporciona acceso a Documents a través de iTunes y la aplicación Archivos — úsala con conciencia.
  • Monitorea regularmente el tamaño de Documents Directory: superar los 100 MB para datos no críticos es un problema arquitectónico.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también