Documents Directory: vad är det, syfte och åtkomst till filer

Författare: IT Sectr Publicerad: 2026-07-10 Lästid: 10 min

Documents Directory — är en katalog i iOS-applikationens sandlåda, avsedd för lagring av användardata som måste bevaras mellan applikationens sessioner och vara tillgängliga för användaren via iTunes File Sharing och iCloud. Enligt Apple File System Programming Guide (2024) inkluderas innehållet i denna katalog automatiskt i iCloud- och iTunes-säkerhetskopian, så utvecklaren måste medvetet välja vilka data som ska placeras i Documents. Till skillnad från Caches Directory tas filer i Documents inte bort av systemet när det är brist på utrymme — ansvaret för storlekshantering ligger på applikationen.

Huvudpunkter

  • Documents Directory — huvudkatalogen för användarfiler som måste bevaras och vara tillgängliga via iTunes.
  • Data från Documents säkerhetskopieras automatiskt till iCloud och iTunes — ta hänsyn till detta vid design av lagring.
  • Systemet tar inte bort filer från Documents vid rensning av cache — utvecklaren ansvarar för att frigöra utrymme.
  • Sökvägen till katalogen erhålls via NSSearchPathForDirectoriesInDomains med NSDocumentDirectory eller via FileManager.urls.
  • För stora filer som kan återställas, använd Caches Directory — för att inte förbruka utrymme i iCloud-säkerhetskopian.

Vad är Documents Directory i iOS?

Documents Directory — är en katalog inuti iOS-applikationens sandlåda, avsedd för lagring av användardata som måste bevaras mellan körningar och vara tillgängliga för användaren. Varje applikation får sin egen isolerade sandlåda, och Documents är en av nyckelkatalogerna tillsammans med Caches, tmp och Library.

iOS använder en strikt sandlåda: applikationen har inte åtkomst till andra applikationers filsystem och systemkataloger utan särskilda behörigheter. Documents Directory — den enda katalog vars innehåll användaren kan visa via iTunes File Sharing (när motsvarande nyckel UIFileSharingEnabled aktiveras i Info.plist).

Enligt data från Apple WWDC 2023 använder över 85% av applikationerna i App Store Documents Directory för att lagra åtminstone en typ av användardata — från exporterade PDF-filer till sparade spelfiler och exporterade bilder.

Utvecklaren måste förstå: filer i Documents inkluderas automatiskt i iCloud- och iTunes-säkerhetskopian. Om applikationen lagrar stora mängder återställningsbara data i Documents (till exempel bildcache eller temporära filer), kommer detta att leda till oberättigad förbrukning av utrymme i användarens iCloud-lagring.

Hur får man sökvägen till Documents Directory

I Swift erhålls sökvägen till Documents Directory via FileManager. Apple rekommenderar att använda URL-baserat API istället för strängbaserat för bättre kompatibilitet med moderna iOS-funktioner.

swift
import Foundation

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

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

Objective-C använder NSSearchPathForDirectoriesInDomains — ett äldre men fortfarande understött tillvägagångssätt som returnerar en strängväg istället för en URL.

objective-c
@import Foundation;

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

Moderna projekt i Swift bör använda FileManager.urls eftersom denna metod returnerar en URL, inte en sträng, vilket minskar risken för fel med sökvägskodning och gör koden mer typ säker.

Vilka data ska lagras i Documents

Documents Directory är avsedd för data som skapats av användaren eller som användaren behöver i explicit form. Apple framhäver flera kategorier som är lämpliga för denna katalog.

Användardokument och filer

Filer som användaren skapar eller importerar — textdokument, PDF-filer, bilder, exporterade rapporter, säkerhetskopior. Dessa data har direkt värde för användaren, och deras förlust skulle vara kritisk.

Sparade spel och applikationstillstånd

Sparade spel, applikationstillståndsfiler, exporterade projekt — allt som användaren förväntar sig att återställa efter ominstallation av applikationen. För kritisk data rekommenderas dock även att använda iCloud Key-Value Storage eller Core Data med iCloud-synkronisering.

DatatypLämplig för DocumentsAlternativ
PDF och textdokumentJa
Cache av bilderNejCaches Directory
Sparade spelJaiCloud KVS
Loggar och felsökningsdataNejCaches eller tmp
Exporterade rapporterJa

Nyckelkriterium: om data kan återställas från nätverket eller återskapas — deras plats är i Caches, inte i Documents. Varje gigabyte i Documents är en gigabyte i användarens iCloud-säkerhetskopia.

Säkerhetskopiering och synkronisering

iOS inkluderar automatiskt innehållet i Documents Directory i säkerhetskopian när enheten ansluts till iTunes eller vid synkronisering med iCloud. Detta beteende kan inte inaktiveras på katalognivå — endast fil för fil via attributet NSURLIsExcludedFromBackupKey.

Från och med iOS 5.0 började Apple avvisa applikationer som lagrar stora mängder återställningsbara data i Documents. Apples rekommendation: filer som kan laddas ner igen bör lagras i Caches Directory med flagga för uteslutning från säkerhetskopian.

swift
import Foundation

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

// Exkludera fil från iCloud-säkerhetskopia
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

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

iCloud-synkronisering fungerar via NSUbiquitousContainer om applikationen använder iCloud Documents. I så fall synkroniseras filer från Documents Directory automatiskt mellan användarens enheter. För applikationer utan iCloud är synkroniseringen begränsad till säkerhetskopiering.

Documents Directory vs Caches Directory

Skillnaden mellan Documents och Caches — en av de vanligaste missuppfattningarna bland börjande iOS-utvecklare. Huvudskillnaden: systemet kan när som helst ta bort filer från Caches för att frigöra utrymme, men rör aldrig Documents utan användarens vetskap.

EgenskapDocuments DirectoryCaches Directory
iCloud-säkerhetskopiaJa (standard)Nej
Borttagning av systemetAldrigVid brist på utrymme
iTunes File SharingJa (när flaggan är aktiverad)Nej
SyfteAnvändardataCache, temporära data
Återställning av dataKräver återställningKan laddas ner igen från nätverket

Enligt Apple Developer Documentation (2024) är felaktig användning av Documents Directory — en av de vanliga orsakerna till avvisning av applikationer vid granskning: om applikationen lagrar mer än några megabyte återställningsbara data i Documents, rekommenderar Apple att flytta dem till Caches eller tillämpa NSURLIsExcludedFromBackupKey.

Praktisk regel: om användaren blir ledsen över förlusten av filen — lagra i Documents. Om filen kan laddas ner eller genereras igen — lagra i Caches.

Bästa praxis för arbete med Documents

Erfarna iOS-utvecklare har utarbetat flera regler som hjälper till att undvika problem med Documents Directory i alla faser av applikationens livscykel — från utveckling till publicering i App Store.

Övervakning av katalogstorlek

Kontrollera regelbundet storleken på Documents Directory via FileManager.enumerator(at:includingPropertiesForKeys:). Om storleken överstiger 100 MB för data som inte är användardata — är detta en anledning att ompröva lagringsarkitekturen.

Uteslutning av återställningsbara filer från säkerhetskopian

För alla filer som kan laddas ner igen från nätverket, ställ in isExcludedFromBackup = true. Detta minskar belastningen på användarens iCloud-lagring och minskar risken för avvisning av applikationen av App Review.

Migrering vid uppdatering

När dataformatet i Documents ändras, förutse migrering: ta inte bort gamla filer förrän du är säker på att nya har skapats korrekt. Använd versionsspecifika underkataloger.

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
)

Att följa dessa metoder minskar risken för förlust av användardata, minskar storleken på iCloud-säkerhetskopian och underlättar granskningsprocessen i App Store.

Vanliga frågor

Kan användaren få åtkomst till Documents Directory utan iTunes?

Ja, via Files — den inbyggda iOS-applikationen från och med version 11. När nyckeln UIFileSharingEnabled aktiveras i Info.plist visas innehållet i Documents Directory i appen Filer i avsnittet „På min iPhone”. Användaren kan visa, kopiera och ta bort filer.

Vad händer med Documents Directory när applikationen tas bort?

Hela applikationens sandlåda, inklusive Documents Directory, Caches, tmp och Library, tas helt bort från enheten. Säkerhetskopior i iCloud finns kvar tills återställning eller manuell borttagning. Vid ominstallation börjar applikationen med en ren sandlåda.

Hur kontrollerar jag storleken på Documents Directory i koden?

Använd FileManager.enumerator för att gå igenom alla filer i katalogen och summera deras storlekar. För varje fil, hämta attributet .fileSize via resourceValues(forKeys:). Alternativt, använd URLResourceKey.fileSizeKey och .directoryEnumerationResults.

Kan jag lagra en Core Data SQLite-databas i Documents?

Som standard skapar Core Data SQLite-filen i Library/Application Support, inte i Documents. Att flytta databasen till Documents rekommenderas inte — den kommer att inkluderas i iTunes File Sharing och användaren kan oavsiktligt ta bort eller ändra den. Undantag: om applikationen uttryckligen ger användaren åtkomst till data via Core Data.

Vad är UIFileSharingEnabled och hur aktiverar jag det?

UIFileSharingEnabled (Application supports iTunes file sharing) — en boolesk nyckel i Info.plist. När den ställs in på YES kan användaren kopiera filer från Documents Directory via iTunes och Files. Lägg till nyckeln i Info.plist: UIFileSharingEnabled = YES. Aktivera endast om applikationen faktiskt skapar användardokument.

Sammanfattning

  • Documents Directory — huvudplatsen för användardata i iOS-applikationen som måste bevaras och säkerhetskopieras.
  • Sökvägen till katalogen erhålls via FileManager.urls(for: .documentDirectory) i Swift eller NSSearchPathForDirectoriesInDomains i Objective-C.
  • Alla filer från Documents inkluderas som standard i iCloud- och iTunes-säkerhetskopian — använd isExcludedFromBackup för uteslutning.
  • Systemet tar inte bort filer från Documents av sig självt, till skillnad från Caches Directory.
  • För återställningsbara data (cache, temporära filer) använd Caches Directory, inte Documents.
  • Nyckeln UIFileSharingEnabled öppnar åtkomst till Documents via iTunes och appen Filer — använd medvetet.
  • Övervaka regelbundet storleken på Documents Directory: överskridande av 100 MB för icke-kritisk data är ett arkitekturproblem.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också