Documents Directory: wat is het, doel en toegang tot bestanden

Auteur: IT Sectr Gepubliceerd: 2026-07-10 Leestijd: 10 min

Documents Directory — is een map in de sandbox van de iOS-app, bedoeld voor het opslaan van gebruikersgegevens die bewaard moeten blijven tussen sessies van de app en toegankelijk moeten zijn voor de gebruiker via iTunes File Sharing en iCloud. Volgens Apple File System Programming Guide (2024) wordt de inhoud van deze map automatisch opgenomen in de iCloud- en iTunes-back-up, dus de ontwikkelaar moet bewust kiezen welke gegevens hij in Documents plaatst. In tegenstelling tot Caches Directory worden bestanden in Documents niet door het systeem verwijderd bij gebrek aan ruimte — de verantwoordelijkheid voor het beheer van de grootte ligt bij de app.

Belangrijkste

  • Documents Directory — de hoofdmap voor gebruikersbestanden die bewaard en toegankelijk moeten zijn via iTunes.
  • Gegevens uit Documents worden automatisch geback-upt in iCloud en iTunes — houd hier rekening mee bij het ontwerpen van de opslag.
  • Het systeem verwijdert bestanden uit Documents niet bij het opschonen van de cache — de ontwikkelaar is verantwoordelijk voor het vrijmaken van ruimte.
  • Het pad naar de map wordt verkregen via NSSearchPathForDirectoriesInDomains met NSDocumentDirectory of via FileManager.urls.
  • Voor grote bestanden die hersteld kunnen worden, gebruik Caches Directory — om geen ruimte in de iCloud-back-up te verspillen.

Wat is Documents Directory in iOS?

Documents Directory — is een map in de sandbox van de iOS-app, bedoeld voor het opslaan van gebruikersgegevens die bewaard moeten blijven tussen starts en toegankelijk moeten zijn voor de gebruiker. Elke app krijgt zijn eigen geïsoleerde sandbox en Documents is een van de belangrijkste mappen naast Caches, tmp en Library.

iOS gebruikt een strikte sandbox: de app heeft geen toegang tot het bestandssysteem van andere apps en systeemmappen zonder speciale machtigingen. Documents Directory — de enige map waarvan de inhoud door de gebruiker kan worden bekeken via iTunes File Sharing (bij het inschakelen van de overeenkomstige sleutel UIFileSharingEnabled in Info.plist).

Volgens gegevens van Apple WWDC 2023 gebruikt meer dan 85% van de apps in de App Store Documents Directory voor het opslaan van ten minste één type gebruikersgegevens — van geëxporteerde PDF’s tot opgeslagen spelbestanden en geëxporteerde afbeeldingen.

De ontwikkelaar moet begrijpen: bestanden in Documents worden automatisch opgenomen in de iCloud- en iTunes-back-up. Als de app grote hoeveelheden gegevens in Documents opslaat die kunnen worden hersteld (bijvoorbeeld afbeeldingscache of tijdelijke bestanden), leidt dit tot onnodig ruimtegebruik in de iCloud-opslag van de gebruiker.

Hoe krijg je het pad naar Documents Directory

In Swift wordt het pad naar Documents Directory verkregen via FileManager. Apple raadt aan om URL-based API te gebruiken in plaats van string-based voor een betere compatibiliteit met moderne iOS-mogelijkheden.

swift
import Foundation

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

// Maak bestand aan in Documents
let fileURL = documentsURL.appendingPathComponent("report.pdf")
let data = Data("Hello, world!".utf8)
try data.write(to: fileURL)

Objective-C gebruikt NSSearchPathForDirectoriesInDomains — een oudere maar nog steeds ondersteunde benadering die een stringpad retourneert in plaats van een URL.

objective-c
@import Foundation;

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

Moderne projecten in Swift moeten FileManager.urls gebruiken omdat deze methode een URL retourneert, geen string, wat het risico op fouten met padcodering vermindert en de code type-veiliger maakt.

Welke gegevens opslaan in Documents

Documents Directory is bedoeld voor gegevens die door de gebruiker zijn gemaakt of die de gebruiker in expliciete vorm nodig heeft. Apple onderscheidt verschillende categorieën die geschikt zijn voor deze map.

Gebruikersdocumenten en -bestanden

Bestanden die de gebruiker maakt of importeert — tekstdocumenten, PDF’s, afbeeldingen, geëxporteerde rapporten, back-upbestanden. Deze gegevens hebben directe waarde voor de gebruiker en het verlies ervan zou kritisch zijn.

Spelopslagen en applicatiestatus

Spelopslagen, applicatiestatusbestanden, geëxporteerde projecten — alles wat de gebruiker verwacht te herstellen na het opnieuw installeren van de app. Voor kritieke gegevens wordt echter aangeraden om ook iCloud Key-Value Storage of Core Data met iCloud-synchronisatie te gebruiken.

GegevenstypeGeschikt voor DocumentsAlternatief
PDF en tekstdocumentenJa
Cache van afbeeldingenNeeCaches Directory
SpelopslagenJaiCloud KVS
Logboeken en debuggegevensNeeCaches of tmp
Geëxporteerde rapportenJa

Het belangrijkste criterium: als gegevens uit het netwerk kunnen worden hersteld of opnieuw kunnen worden aangemaakt — hun plaats is in Caches, niet in Documents. Elke gigabyte in Documents is een gigabyte in de iCloud-back-up van de gebruiker.

Back-up en synchronisatie

iOS neemt de inhoud van Documents Directory automatisch op in de back-up bij het verbinden van het apparaat met iTunes of bij synchronisatie met iCloud. Dit gedrag kan niet op mapniveau worden uitgeschakeld — alleen bestand voor bestand via het kenmerk NSURLIsExcludedFromBackupKey.

Vanaf iOS 5.0 begon Apple apps af te wijzen die grote hoeveelheden te herstellen gegevens in Documents opslaan. Apple’s aanbeveling: bestanden die opnieuw kunnen worden gedownload, moeten in Caches Directory worden opgeslagen met een uitsluitingsvlag voor back-up.

swift
import Foundation

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

// Sluit bestand uit van iCloud-back-up
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

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

iCloud-synchronisatie werkt via NSUbiquitousContainer als de app iCloud Documents gebruikt. In dat geval worden bestanden uit Documents Directory automatisch gesynchroniseerd tussen de apparaten van de gebruiker. Voor apps zonder iCloud blijft synchronisatie beperkt tot back-up.

Documents Directory vs Caches Directory

Het verschil tussen Documents en Caches — een van de meest voorkomende misvattingen onder beginnende iOS-ontwikkelaars. Het belangrijkste verschil: het systeem kan op elk moment bestanden uit Caches verwijderen om ruimte vrij te maken, maar raakt Documents nooit aan zonder medeweten van de gebruiker.

KenmerkDocuments DirectoryCaches Directory
Back-up in iCloudJa (standaard)Nee
Verwijdering door systeemNooitBij ruimtegebrek
iTunes File SharingJa (bij inschakelen vlag)Nee
DoelGebruikersgegevensCache, tijdelijke gegevens
Herstel van gegevensHerstel vereistOpnieuw te downloaden uit netwerk

Volgens Apple Developer Documentation (2024) is oneigenlijk gebruik van Documents Directory — een van de veelvoorkomende redenen voor afwijzing van apps bij review: als de app meer dan enkele megabytes aan te herstellen gegevens in Documents opslaat, raadt Apple aan ze naar Caches te verplaatsen of NSURLIsExcludedFromBackupKey toe te passen.

Praktische regel: als de gebruiker verdrietig zal zijn bij het verlies van het bestand — bewaar in Documents. Als het bestand opnieuw kan worden gedownload of gegenereerd — bewaar in Caches.

Beste praktijken voor werken met Documents

Ervaren iOS-ontwikkelaars hebben verschillende regels opgesteld die helpen problemen met Documents Directory in alle fasen van de levenscyclus van de app te voorkomen — van ontwikkeling tot publicatie in de App Store.

Monitor de grootte van de map

Controleer regelmatig de grootte van Documents Directory via FileManager.enumerator(at:includingPropertiesForKeys:). Als de grootte 100 MB overschrijdt voor gegevens die geen gebruikersgegevens zijn — is dit een reden om de opslagarchitectuur te heroverwegen.

Sluit herbruikbare bestanden uit van back-up

Stel voor alle bestanden die opnieuw uit het netwerk kunnen worden gedownload isExcludedFromBackup = true in. Dit vermindert de belasting van de iCloud-opslag van de gebruiker en verlaagt het risico op afwijzing van de app door App Review.

Migreer bij update

Voorzie bij het wijzigen van het gegevensformaat in Documents een migratie: verwijder oude bestanden pas als je zeker weet dat nieuwe correct zijn aangemaakt. Gebruik versie-specifieke submappen.

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
)

Het naleven van deze praktijken vermindert het risico op verlies van gebruikersgegevens, verkleint de grootte van de iCloud-back-up en vergemakkelijkt het doorlopen van de review in de App Store.

Veelgestelde vragen

Kan de gebruiker toegang krijgen tot Documents Directory zonder iTunes?

Ja, via Files — de ingebouwde iOS-app vanaf versie 11. Bij het inschakelen van de sleutel UIFileSharingEnabled in Info.plist wordt de inhoud van Documents Directory weergegeven in de app Bestanden in het gedeelte „Op mijn iPhone“. De gebruiker kan bestanden bekijken, kopiëren en verwijderen.

Wat gebeurt er met Documents Directory bij het verwijderen van de app?

De hele sandbox van de app, inclusief Documents Directory, Caches, tmp en Library, wordt volledig van het apparaat verwijderd. Back-ups in iCloud blijven behouden tot herstel of handmatige verwijdering. Bij herinstallatie begint de app met een schone sandbox.

Hoe controleer ik de grootte van Documents Directory in code?

Gebruik FileManager.enumerator om alle bestanden in de map te doorlopen en hun groottes op te tellen. Voor elk bestand verkrijg je het kenmerk .fileSize via resourceValues(forKeys:). Als alternatief gebruik je URLResourceKey.fileSizeKey en .directoryEnumerationResults.

Kan ik een Core Data SQLite-database in Documents opslaan?

Standaard maakt Core Data het SQLite-bestand aan in Library/Application Support, niet in Documents. Het verplaatsen van de database naar Documents wordt niet aanbevolen — deze wordt opgenomen in iTunes File Sharing en de gebruiker kan deze per ongeluk verwijderen of wijzigen. Uitzondering: als de app de gebruiker expliciet toegang geeft tot gegevens via Core Data.

Wat is UIFileSharingEnabled en hoe schakel ik het in?

UIFileSharingEnabled (Application supports iTunes file sharing) — een Booleaanse sleutel in Info.plist. Bij instelling op YES kan de gebruiker bestanden uit Documents Directory kopiëren via iTunes en Files. Voeg de sleutel toe aan Info.plist: UIFileSharingEnabled = YES. Schakel alleen in als de app daadwerkelijk gebruikersdocumenten maakt.

Samenvatting

  • Documents Directory — de belangrijkste plaats voor gebruikersgegevens in de iOS-app die bewaard en geback-upt moeten worden.
  • Het pad naar de map wordt verkregen via FileManager.urls(for: .documentDirectory) in Swift of NSSearchPathForDirectoriesInDomains in Objective-C.
  • Alle bestanden uit Documents worden standaard opgenomen in de iCloud- en iTunes-back-up — gebruik isExcludedFromBackup voor uitsluiting.
  • Het systeem verwijdert bestanden uit Documents niet zelfstandig, in tegenstelling tot Caches Directory.
  • Voor herbruikbare gegevens (cache, tijdelijke bestanden) gebruik Caches Directory, niet Documents.
  • De sleutel UIFileSharingEnabled opent de toegang tot Documents via iTunes en de app Bestanden — gebruik bewust.
  • Monitor regelmatig de grootte van Documents Directory: overschrijding van 100 MB voor niet-kritieke gegevens is een architectuurprobleem.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook