Documents Directory: bu nədir, məqsədi və fayllara giriş

Müəllif: IT Sectr Dərc olunub: 2026-07-10 Oxuma vaxtı: 10 dəq

Documents Directory — iOS tətbiqinin sandbox qovluğunda yerləşən, tətbiqin iş sessiyaları arasında qorunmalı və istifadəçiyə iTunes File Sharing və iCloud vasitəsilə əlıçatan olmalı olan istifadəçi məlumatlarını saxlamaq üçün nəzərdə tutulmuş kataloqdur. Apple File System Programming Guide (2024) məlumatlarına görə, bu kataloqun məzmunu avtomatik olaraıç iCloud və iTunes ehtiyat nüsxasına daxil edilir, buna görə də tərtibatçı Documents-də hansı məlumatların yerləşdiriləcəyini şürurlu seçməlidir. Caches Directory-dən fərqli olaraıç, Documents-dəki fayllar yer çatışmazlığı zamanı sistem tərəfindən silinmir — ölçünün idarə edilməsi məsuliyyəti tətbiqin üzərinə düşür.

Başlıca

  • Documents Directory — iTunes vasitəsilə qorunmalı və əlıçatan olmalı istifadəçi faylları üçün əsas kataloq.
  • Documents-dən məlumatlar iCloud və iTunes-da avtomatik olaraıç ehtiyat nüsxəlanır — anbarı layihələndirərkən bunu nəzərə al.
  • Sistem keşişi təmizləyərkən Documents-dən faylları silmir — yerin boşaldılmasına tərtibatçı cavabdehdir.
  • Kataloqun yolu NSSearchPathForDirectoriesInDomains ilə NSDocumentDirectory və ya FileManager.urls vasitəsilə əldə edilir.
  • Böyük, bərpa oluna bilən fayllar üçün iCloud ehtiyat nüsxəsında yer sərf etməmək üçün Caches Directory istifadə edin.

iOS-da Documents Directory nədir?

Documents Directory — iOS tətbiqinin sandbox daxilində, istifadəçi məlumatlarını saxlamaq üçün nəzərdə tutulmuş kataloq. Hər tətbiq öz izolə edilmiş sandbox alır və Documents Caches, tmp və Library ilə yanaşı əsas kataloqlardan biridir.

iOS ciddi sandbox istifadə edir: tətbiq xüsusi icazələr olmadan digər tətbiqlərin fayl sisteminə və sistem kataloqlarına çıxış əldə edə bilməz. Documents Directory — məzmunu istifadəçinin iTunes File Sharing vasitəsilə görə biləcəyi yeganə kataloq (Info.plist-də müvafiq UIFileSharingEnabled açarı aktiv edildikdə).

Apple WWDC 2023 məlumatlarına görə, App Store-dakı tətbiqlərin 85%-dən çoxu ən azı bir növ istifadəçi məlumatını saxlamaq üçün Documents Directory-dən istifadə edir — ixrac edilmiş PDF-lərdən tutmuş oyun fayllarına və ixrac edilmiş şəkillərə qədər.

Tərtibatçı başa düşməlidir: Documents-dəki fayllar iCloud və iTunes ehtiyat nüsxəsına avtomatik olaraıç daxil edilir. Tətbiq Documents-də böyük həcmdə bərpa oluna bilən məlumatları (məsələn, şəkil keşişi və ya müvəqqəti fayllar) saxlayırsa, bu, istifadəçinin iCloud yaddaşında əsaslandırılmamış yer sərfiyyatına səbəb olacaq.

Documents Directory yolunu necə əldə etmək

Swift-də Documents Directory yolu FileManager vasitəsilə əldə edilir. Apple, iOS-un müasir imkanları ilə daha yaxşı uyğunluq üçün string-based əvəzinə URL-based API-dən istifadə etməyi tövsiyə edir.

swift
import Foundation

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

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

Objective-C NSSearchPathForDirectoriesInDomains — URL əvəzinə sətir yolu qaytaran köhnə, lakin hələ dəstəklənən yanaşmanı istifadə edir.

objective-c
@import Foundation;

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

Swift-də müasir layihələr FileManager.urls istifadə etməlidir, çünki bu metod URL qaytarır, sətir yox, bu da yol kodlaşdırması ilə bağlı səhvlər riskini azaldır və kodu daha töküm təhlükəsiz edir.

Documents-də hansı məlumatları saxlamaq

Documents Directory istifadəçi tərəfindən yaradılan və ya istifadəçiyə açıq şəkildə lazım olan məlumatlar üçün nəzərdə tutulmuşdur. Apple bu kataloqda yerləşdirilə biləcək bir neçə kateqoriyanı ayırır.

İstifadəçi sənədləri və faylları

istifadəçinin yaratdığı və ya idxal etdiyi fayllar — mətn sənədləri, PDF, şəkillər, ixrac edilmiş hesabatlar, ehtiyat nüsxə faylları. Bu məlumatlar istifadəçi üçün birbaşa dəyərə malikdir və onların itirilməsi kritik olardı.

Oyun yaddaşları və tətbiq vəziyyəti

Oyun yaddaşları, tətbiq vəziyyəti faylları, ixrac edilmiş layihələr — istifadəçinin tətbiqi yenidən yüklədikdən sonra bərpa etməyi gözlədiyi hər şey. Bununla belə, kritik məlumatlar üçün əlavə olaraıç iCloud Key-Value Storage və ya iCloud sinxronizasiyası ilə Core Data istifadə etmək tövsiyə olunur.

Məlumat növüDocuments üçün uyğumAlternativ
PDF və mətn sənədləriBəli
Şəkil keşişiXeyrCaches Directory
Oyun yaddaşlarıBəliiCloud KVS
Loglar və debug məlumatlarıXeyrCaches və ya tmp
İxrac edilmiş hesabatlarBəli

Əsas meyar: məlumatlar şəbəkədən bərpa oluna bilirsə və ya yenidən yaradıla bilərsə, onların yeri Caches-dədir, Documents-də yox. Documents-dəki hər giqabayt istifadəçinin iCloud ehtiyat nüsxəsində bir giqabaytdır.

Ehtiyat nüsxə və sinxronizasiya

iOS cihaz iTunes-a qoşulduqda və ya iCloud ilə sinxronizasiya zamanı Documents Directory-nin məzmununu avtomatik olaraıç ehtiyat nüsxəyə daxil edir. Bu davranışı kataloq səviyyəsində söndürmək mümkün deyil — yalnız fayl üzrə NSURLIsExcludedFromBackupKey atributu vasitəsilə.

iOS 5.0-dan başlayaraıç, Apple Documents-də böyük həcmdə bərpa oluna bilən məlumatlar saxlayan tətbiqləri rədd etməyə başladı. Apple tövsiyəsi: yenidən yüklənə bilən fayllar ehtiyat nüsxəsindən xaric etmə bayrağı ilə Caches Directory-də saxlanmalıdır.

swift
import Foundation

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

// Faylı iCloud ehtiyat nüsxəsindən xaric et
var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

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

iCloud sinxronizasiyası, tətbiq iCloud Documents istifadə edirsə, NSUbiquitousContainer vasitəsilə işləyir. Bu halda Documents Directory-dən fayllar avtomatik olaraıç istifadəçinin cihazları arasında sinxronlaşdırılır. iCloud olmayan tətbiqlər üçün sinxronizasiya ehtiyat nüsxə ilə məhdudlaşır.

Documents Directory vs Caches Directory

DocumentsCaches arasındakı fərq yeni başlayan iOS tərtibatçıları arasında ən çox yayılmış yanlış anlayışlardan biridir. Əsas fərq: sistem yer boşaltmaq üçün istənilən an Caches-dən faylları silə bilər, lakin istifadəçinin xəbəri olmadan Documents-ə heç vaxt toxunmur.

XarakteristikaDocuments DirectoryCaches Directory
iCloud ehtiyat nüsxəsiBəli (standart)Xeyr
Sistem tərəfindən silinməHeç vaxtYer çatışmazlığında
iTunes File SharingBəli (bayraq aktivdirsə)Xeyr
Məqsədİstifadəçi məlumatlarıKeşiş, müvəqqəti məlumatlar
Məlumatların bərpasıBərpa tələb olunurŞəbəkədən yenidən yüklənə bilər

Apple Developer Documentation (2024) məlumatlarına görə, Documents Directory-nin səhv istifadəsi tətbiqlərin rəy zamanı rədd edilməsinin tez-tez səbəblərindən biridir: tətbiq Documents-də bərpa oluna bilən bir neçə meqabaytdan çox məlumat saxlayırsa, Apple onların Caches-ə köçürülməsini və ya NSURLIsExcludedFromBackupKey tətbiq edilməsini tövsiyə edir.

Praktik qayda: istifadəçi faylın itirilməsindən üzüləcəksə — Documents-də saxla. Faylı yenidən yükləmək və ya yaratmaq olarsa — Caches-də saxla.

Documents ilə işləmək üçün ən yaxşı təcrübələr

Təcrübəli iOS tərtibatçıları tətbiqin həyat dövriyyəsinin bütün mərhələlərində Documents Directory ilə bağlı problemlərdən qaçmağa kömək edən bir neçə qayda hazırlamışlar.

Kataloq ölçüsünün monitorinqi

Müzəmmədən FileManager.enumerator(at:includingPropertiesForKeys:) vasitəsilə Documents Directory ölçüsünü yoxlayın. Əgər ölçü istifadəçi məlumatları olmayan məlumatlar üçün 100 MB-ı keçərsə, bu, anbar arxitekturasını yenidən nəzərdən keçirmək üçün səbəbdir.

Bərpa oluna bilən faylların ehtiyat nüsxəsindən xaric edilməsi

Şəbəkədən yenidən yüklənə bilən bütün fayllar üçün isExcludedFromBackup = true təyin edin. Bu, istifadəçinin iCloud yaddaşına yükü azaldır və tətbiqin App Review tərəfindən rədd edilmə riskini azaldır.

Yeniləmə zamanı miqrasiya

Documents-də məlumat formatı dəyişdirilərkən miqrasiyanı nəzərdə tutun: yeni faylların düzgün yaradıldığına əmin olana qədər köhnə faylları silməyin. Versiyaya xas alt kataloqlardan istifadə edin.

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
)

Bu təcrübələrə riayət etmək istifadəçi məlumatlarının itirilməsi riskini azaldır, iCloud ehtiyat nüsxəsinin ölçüsünü kiçildir və App Store-da rəy keçmək prosesini asanlaşdırır.

Tez-tez verilən suallar

İstifadəçi iTunes olmadan Documents Directory-ə giriş əldə edə bilərmi?

Bəli, Files — iOS 11-dən başlayaraıç daxili tətbiq vasitəsilə. Info.plist-də UIFileSharingEnabled açarı aktiv edildikdə, Documents Directory-nin məzmunu Fayllar tətbiqində „My iPhone“ bölməsində göstərilir. İstifadəçi faylları görə, köçürə və silə bilər.

Tətbiq silindikdə Documents Directory-ə nə olacaq?

Tətbiqin bütün sandbox — o cümlədən Documents Directory, Caches, tmp və Library — cihazdan tamamilə silinir. iCloud-dakı ehtiyat nüsxələr bərpa və ya manual silinməyə qədər qalır. Tətbiq yenidən quraşdırıldıqda təmiz sandbox ilə başlayır.

Kodda Documents Directory ölçüsünü necə yoxlamaq olar?

Kataloqda bütün faylları gəzmək və onların ölçülərini cəmləmək üçün FileManager.enumerator istifadə edin. Hər fayl üçün resourceValues(forKeys:) vasitəsilə .fileSize atributunu əldə edin. Alternativ olaraıç URLResourceKey.fileSizeKey və .directoryEnumerationResults istifadə edin.

Core Data SQLite bazasını Documents-də saxlamaq olarmı?

Standart olaraıç Core Data SQLite faylını Library/Application Support-da yaradır, Documents-də yox. Bazanı Documents-ə köçürmək tövsiyə edilmir — o, iTunes File Sharing-ə daxil ediləcək və istifadəçi təsadüfən silə və ya dəyişdirə bilər. İstisna: tətbiq açıq şəkildə istifadəçiyə Core Data vasitəsilə məlumatlara giriş verirsə.

UIFileSharingEnabled nədir və onu necə aktiv etmək olar?

UIFileSharingEnabled (Application supports iTunes file sharing) — Info.plist-də boolean açar. YES olaraıç təyin edildikdə, istifadəçi iTunes və Files vasitəsilə Documents Directory-dən faylları köçürə bilər. Açarı Info.plist-ə əlavə edin: UIFileSharingEnabled = YES. Yalnız tətbiq həqiqətən istifadəçi sənədləri yaradırsa aktiv edin.

Xülasə

  • Documents Directory — iOS tətbiqində qorunmalı və ehtiyatı köçürülməli istifadəçi məlumatları üçün əsas yer.
  • Kataloqun yolu Swift-də FileManager.urls(for: .documentDirectory) və ya Objective-C-də NSSearchPathForDirectoriesInDomains vasitəsilə əldə edilir.
  • Documents-dən bütün fayllar standart olaraıç iCloud və iTunes ehtiyat nüsxəsına daxil edilir — xaric etmək üçün isExcludedFromBackup istifadə edin.
  • Sistem Caches Directory-dən fərqli olaraıç Documents-dən faylları özü silmir.
  • Bərpa oluna bilən məlumatlar (keşiş, müvəqqəti fayllar) üçün Documents yox, Caches Directory istifadə edin.
  • UIFileSharingEnabled açarı Documents-ə iTunes və Fayllar tətbiqi vasitəsilə giriş açır — şürurlu istifadə edin.
  • Documents Directory ölçüsünü müzəmmədən izləyin: qeyri-kritik məlumatlar üçün 100 MB-ı keçmək memarlıq problemidir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun