Documents Directory: bu nima, vazifasi va fayllarga kirish

Muallif: IT Sectr Nashr etilgan: 2026-07-10 O'qish vaqti: 10 daq

Documents Directory — iOS ilovasining sandbox ida joylashgan, ilova seanslari orasida saqlanishi va foydalanuvchi uchun iTunes File Sharing va iCloud orqali mavjud bo‘lishi kerak bo‘lgan foydalanuvchi ma’lumotlarini saqlash uchun mo‘ljallangan katalogdir. Apple File System Programming Guide (2024) ma’lumotlariga ko‘ra, ushbu katalog tarkibi avtomatik ravishda iCloud va iTunes zaxira nusxasiga qo‘shiladi, shuning uchun dasturchi Documents ga qanday ma’lumotlarni joylashtirishni ongli ravishda tanlashi kerak. Caches Directory dan farqli o‘laroq, Documents dagi fayllar joy yetishmasligida tizim tomonidan o‘chirilmaydi — hajmni boshqarish mas’uliyati ilova zimmasiga tushadi.

Asosiy

  • Documents Directory — saqlanishi va iTunes orqali mavjud bo‘lishi kerak bo‘lgan foydalanuvchi fayllari uchun asosiy katalog.
  • Documents dagi ma’lumotlar iCloud va iTunes da avtomatik ravishda zaxiralanadi — saqlashni loyihalashda buni hisobga ol.
  • Tizim keshni tozalashda Documents dan fayllarni o‘chirmaydi — joyni bo‘shatish uchun dasturchi javobgardir.
  • Katalog yo‘li NSSearchPathForDirectoriesInDomains bilan NSDocumentDirectory yoki FileManager.urls orqali olinadi.
  • Katta, tiklanadigan fayllar uchun iCloud zaxira nusxasida joy sarf qilmaslik uchun Caches Directory dan foydalaning.

iOS da Documents Directory nima?

Documents Directory — iOS ilovasining sandbox ichidagi, foydalanuvchi ma’lumotlarini saqlash uchun mo‘ljallangan katalog bo‘lib, ishga tushirishlar orasida saqlanishi va foydalanuvchi uchun mavjud bo‘lishi kerak. Har bir ilova o‘zining izolyatsiyalangan sandbox ini oladi va Documents Caches, tmp va Library bilan birga asosiy kataloglardan biridir.

iOS qat’iy sandbox dan foydalanadi: ilova maxsus ruxsatlarsiz boshqa ilovalarning fayl tizimiga va tizim kataloglariga kira olmaydi. Documents Directory — tarkibini foydalanuvchi iTunes File Sharing orqali ko‘rishi mumkin bo‘lgan yagona katalog (Info.plist da tegishli UIFileSharingEnabled kaliti yoqilganda).

Apple WWDC 2023 ma’lumotlariga ko‘ra, App Store dagi ilovalarning 85% dan ortig‘i kamida bitta turdagi foydalanuvchi ma‘lumotlarini saqlash uchun Documents Directory dan foydalanadi — eksport qilingan PDF lardan tortib o‘yin fayllari va eksport qilingan rasmlargacha.

Dasturchi tushunishi kerak: Documents dagi fayllar iCloud va iTunes zaxira nusxasiga avtomatik ravishda qo‘shiladi. Agar ilova Documents da tiklanadigan katta hajmdagi ma’lumotlarni (masalan, rasm keshi yoki vaqtinchalik fayllar) saqlasa, bu foydalanuvchining iCloud saqlash joyining asossiz sarflanishiga olib keladi.

Documents Directory ga yo‘lni qanday olish

Swift da Documents Directory yo‘li FileManager orqali olinadi. Apple iOS ning zamonaviy imkoniyatlari bilan yaxshiroq moslik uchun string based o‘rniga URL based API dan foydalanishni tavsiya qiladi.

swift
import Foundation

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

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

Objective-C NSSearchPathForDirectoriesInDomains dan foydalanadi — URL o‘rniga satr yo‘lini qaytaradigan eski, ammo hali ham qo‘llab-quvvatlanadigan yondashuv.

objective-c
@import Foundation;

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

Swift dagi zamonaviy loyihalar FileManager.urls dan foydalanishi kerak, chunki bu usul URL qaytaradi, satr emas, bu yo‘l kodlash xatolari xavfini kamaytiradi va kodni tip jihatidan xavfsizroq qiladi.

Documents da qanday ma’lumotlarni saqlash

Documents Directory foydalanuvchi tomonidan yaratilgan yoki foydalanuvchiga aniq shaklda kerak bo‘lgan ma’lumotlar uchun mo‘ljallangan. Apple ushbu katalogda joylashtirish mumkin bo‘lgan bir necha toifani ajratadi.

Foydalanuvchi hujjatlari va fayllari

Foydalanuvchi yaratadigan yoki import qiladigan fayllar — matn hujjatlari, PDF lar, rasmlar, eksport qilingan hisobotlar, zaxira nusxa fayllari. Bu ma’lumotlar foydalanuvchi uchun to‘g‘ridan-to‘g‘ri qiymatga ega va ularning yo‘qolishi jiddiy bo‘ladi.

O‘yin yozuvlari va ilova holati

O‘yin yozuvlari, ilova holati fayllari, eksport qilingan loyihalar — foydalanuvchi ilovani qayta o‘rnatgandan so‘ng tiklashni kutadigan hamma narsa. Biroq, muhim ma’lumotlar uchun qo‘shimcha ravishda iCloud Key-Value Storage yoki iCloud sinxronizatsiyasi bilan Core Data dan foydalanish tavsiya etiladi.

Ma’lumot turiDocuments uchun mosMuqobil
PDF va matn hujjatlariHa
Rasm keshiYo‘qCaches Directory
O‘yin yozuvlariHaiCloud KVS
Loglar va disk raskadka ma’lumotlariYo‘qCaches yoki tmp
Eksport qilingan hisobotlarHa

Asosiy mezon: agar ma’lumotlarni tarmoqdan tiklash yoki qayta yaratish mumkin bo‘lsa — ularning joyi Caches da, Documents da emas. Documents dagi har bir gigabayt foydalanuvchining iCloud zaxira nusxasidagi bir gigabaytdir.

Zaxira nusxa va sinxronizatsiya

iOS qurilma iTunes ga ulanganda yoki iCloud bilan sinxronizatsiya qilinganda Documents Directory tarkibini avtomatik ravishda zaxira nusxaga qo‘shadi. Bu xatti-harakatni katalog darajasida o‘chirib bo‘lmaydi — faqat faylma-fayl NSURLIsExcludedFromBackupKey atributi orqali.

iOS 5.0 dan boshlab, Apple Documents da tiklanadigan katta hajmdagi ma’lumotlarni saqlaydigan ilovalarni rad eta boshladi. Apple tavsiyasi: qayta yuklab olinadigan fayllar zaxira nusxadan chiqarib tashlash bayrog‘i bilan Caches Directory da saqlanishi kerak.

swift
import Foundation

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

// Faylni iCloud zaxira nusxasidan chiqarib tashlash
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

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

iCloud sinxronizatsiyasi, agar ilova iCloud Documents dan foydalansa, NSUbiquitousContainer orqali ishlaydi. Bunday holda, Documents Directory dagi fayllar avtomatik ravishda foydalanuvchi qurilmalari o‘rtasida sinxronlanadi. iCloud siz ilovalar uchun sinxronizatsiya zaxira nusxa bilan cheklangan.

Documents Directory vs Caches Directory

Documents va Caches o‘rtasidagi farq — boshlang‘ich iOS dasturchilari orasida eng keng tarqalgan noto‘g‘ri tushunchalardan biri. Asosiy farq: tizim joy bo‘shatish uchun istalgan payt Caches dan fayllarni o‘chirishi mumkin, lekin foydalanuvchining xabarisiz Documents ga hech qachon tegmaydi.

XarakteristikaDocuments DirectoryCaches Directory
iCloud zaxira nusxasiHa (standart)Yo‘q
Tizim tomonidan o‘chirishHech qachonJoy yetishmasligida
iTunes File SharingHa (bayroq yoqilgan bo‘lsa)Yo‘q
VazifaFoydalanuvchi ma’lumotlariKesh, vaqtinchalik ma’lumotlar
Ma’lumotlarni tiklashTiklash talab qilinadiTarmoqdan qayta yuklab olish mumkin

Apple Developer Documentation (2024) ma’lumotlariga ko‘ra, Documents Directory dan noto‘g‘ri foydalanish — ilovalarni ko‘rib chiqishda rad etilishining tez-tez uchraydigan sabablaridan biri: agar ilova Documents da tiklanadigan bir necha megabaytdan ortiq ma’lumotni saqlasa, Apple ularni Caches ga ko‘chirishni yoki NSURLIsExcludedFromBackupKey ni qo‘llashni tavsiya qiladi.

Amaliy qoida: agar foydalanuvchi fayl yo‘qolishidan xafa bo‘lsa — Documents da saqla. Agar faylni qayta yuklab olish yoki yaratish mumkin bo‘lsa — Caches da saqla.

Documents bilan ishlashning eng yaxshi amaliyotlari

Tajribali iOS dasturchilari ilova hayotiy siklining barcha bosqichlarida Documents Directory bilan bog‘liq muammolardan qochishga yordam beradigan bir necha qoidalarni ishlab chiqdilar.

Katalog hajmini monitoring qilish

Muntazam ravishda FileManager.enumerator(at:includingPropertiesForKeys:) orqali Documents Directory hajmini tekshirib turing. Agar hajm foydalanuvchi ma’lumotlari bo‘lmagan ma’lumotlar uchun 100 MB dan oshsa — bu saqlash arxitekturasini qayta ko‘rib chiqish uchun sababdir.

Tiklanadigan fayllarni zaxira nusxadan chiqarish

Tarmoqdan qayta yuklab olinadigan barcha fayllar uchun isExcludedFromBackup = true ni o‘rnating. Bu foydalanuvchining iCloud saqlashiga yukni kamaytiradi va ilovaning App Review tomonidan rad etilish xavfini pasaytiradi.

Yangilashda migratsiya

Documents da ma’lumot formati o‘zgartirilganda migratsiyani nazarda tuting: yangi fayllar to‘g‘ri yaratilganiga ishonch hosil qilguningizcha eski fayllarni o‘chirmang. Versiyaga xos pastki kataloglardan foydalaning.

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
)

Ushbu amaliyotlarga rioya qilish foydalanuvchi ma’lumotlarini yo‘qotish xavfini kamaytiradi, iCloud zaxira nusxasi hajmini kichiklashtiradi va App Store da ko‘rib chiqishdan o‘tishni osonlashtiradi.

Tez-tez so’raladigan savollar

Foydalanuvchi iTunes siz Documents Directory ga kira oladimi?

Ha, Files — iOS 11 dan boshlab o‘rnatilgan ilova orqali. Info.plist da UIFileSharingEnabled kaliti yoqilganda, Documents Directory tarkibi Fayllar ilovasida „Mening iPhone im“ bo‘limida ko‘rsatiladi. Foydalanuvchi fayllarni ko‘rishi, nusxalashi va o‘chirishi mumkin.

Ilova o‘chirilganda Documents Directory ga nima bo‘ladi?

Ilovaning butun sandbox i, shu jumladan Documents Directory, Caches, tmp va Library, qurilmadan to‘liq o‘chiriladi. iCloud dagi zaxira nusxalar tiklash yoki qo‘lda o‘chirishgacha saqlanadi. Ilova qayta o‘rnatilganda toza sandbox bilan boshlaydi.

Kodda Documents Directory hajmini qanday tekshirish mumkin?

Katalogdagi barcha fayllarni aylanib chiqish va ularning hajmlarini jamlash uchun FileManager.enumerator dan foydalaning. Har bir fayl uchun resourceValues(forKeys:) orqali .fileSize atributini oling. Shu bilan bir qatorda URLResourceKey.fileSizeKey va .directoryEnumerationResults dan foydalaning.

Core Data SQLite bazasini Documents da saqlash mumkinmi?

Standart holda Core Data SQLite faylini Library/Application Support da yaratadi, Documents da emas. Bazani Documents ga ko‘chirish tavsiya etilmaydi — u iTunes File Sharing ga qo‘shiladi va foydalanuvchi uni tasodifan o‘chirishi yoki o‘zgartirishi mumkin. Istisno: agar ilova foydalanuvchiga Core Data orqali ma’lumotlarga aniq kirish imkonini bersa.

UIFileSharingEnabled nima va uni qanday yoqish mumkin?

UIFileSharingEnabled (Application supports iTunes file sharing) — Info.plist dagi mantiqiy kalit. YES ga o‘rnatilganda, foydalanuvchi iTunes va Files orqali Documents Directory dan fayllarni nusxalashi mumkin. Kalitni Info.plist ga qo‘shing: UIFileSharingEnabled = YES. Faqat ilova haqiqatan ham foydalanuvchi hujjatlarini yaratsagina yoqing.

Xulosa

  • Documents Directory — iOS ilovasida saqlanishi va zaxiralanishi kerak bo‘lgan foydalanuvchi ma’lumotlari uchun asosiy joy.
  • Katalog yo‘li Swift da FileManager.urls(for: .documentDirectory) yoki Objective-C da NSSearchPathForDirectoriesInDomains orqali olinadi.
  • Documents dan barcha fayllar standart holda iCloud va iTunes zaxira nusxasiga qo‘shiladi — chiqarib tashlash uchun isExcludedFromBackup dan foydalaning.
  • Tizim Caches Directory dan farqli o‘laroq, Documents dan fayllarni o‘zi o‘chirmaydi.
  • Tiklanadigan ma’lumotlar (kesh, vaqtinchalik fayllar) uchun Documents emas, Caches Directory dan foydalaning.
  • UIFileSharingEnabled kaliti Documents ga iTunes va Fayllar ilovasi orqali kirishni ochadi — ongli ravishda foydalaning.
  • Documents Directory hajmini muntazam kuzatib boring: muhim bo‘lmagan ma’lumotlar uchun 100 MB dan oshish arxitektura muammosidir.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing