Application Support: ce este, stocarea configurațiilor și Core Data

Autor: IT Sectr Publicat: 2026-07-10 Timp de citire: 10 min

Application Support — este un director în sandbox-ul aplicației iOS, destinat stocării datelor auxiliare necesare pentru funcționarea aplicației, dar care nu sunt create direct de utilizator. Conform Apple File System Basics (2024), acest director este optim pentru fișiere de configurare, baze de date SQLite Core Data, documente stocate în cache și alte date pe care aplicația le generează independent. Spre deosebire de Documents Directory, Application Support nu este afișat în iTunes File Sharing și utilizatorul nu are acces direct la el, ceea ce protejează datele de serviciu împotriva ștergerii accidentale.

Principalele puncte

  • Application Support — director pentru datele pe care aplicația le creează pentru propria funcționare, nu destinate utilizatorului.
  • Fișierele din Application Support sunt automat salvate în backup în iCloud și iTunes, dacă nu este setat un flag de excludere.
  • Calea către director — NSApplicationSupportDirectory sau FileManager.urls(for: .applicationSupportDirectory).
  • Core Data plasează implicit bazele de date SQLite în Application Support.
  • Utilizatorul nu are acces direct la Application Support prin Files sau iTunes.

Ce este Application Support în iOS?

Application Support — este un director în sandbox-ul aplicației iOS, destinat stocării datelor pe care aplicația le creează și le utilizează pentru funcționarea sa, dar care nu sunt documente de utilizator. Este locul principal pentru configurații, baze de date, metadate stocate în cache și alte fișiere auxiliare.

iOS diferențiază Application Support ca nivel intermediar între Documents (date utilizator) și Caches (date temporare). Fișierele din Application Support pot fi relativ permanente, dar utilizatorul nu ar trebui să aibă acces direct la ele — aceasta o diferențiază de Documents Directory.

Conform Apple Developer Documentation (2024), Application Support este locul recomandat pentru stocarea bazelor de date SQLite Core Data, fișierelor Realm, configurațiilor în format JSON/plist, materialelor de referință descărcate și altor date pe care aplicația le utilizează, dar pe care utilizatorul nu le-a creat în mod explicit.

Important: în mod implicit, Application Support este inclusă în backup-ul iCloud și iTunes. Dacă aplicația stochează volume mari de date care pot fi restaurate în acest director (de exemplu, ghiduri descărcate), este necesar să se seteze flag-ul isExcludedFromBackup pentru fișierele respective.

Cum să obții calea către Application Support

În Swift, calea către Application Support Directory se obține prin FileManager.urls(for: .applicationSupportDirectory). Apple recomandă crearea unui subdirector cu numele aplicației în interiorul Application Support pentru izolarea datelor.

swift
import Foundation

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

// Crează subdirectorul aplicației
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C utilizează NSSearchPathForDirectoriesInDomains cu NSApplicationSupportDirectory. La fel ca în Swift, se recomandă crearea unui subdirector cu numele aplicației.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSApplicationSupportDirectory,
    NSUserDomainMask,
    YES
);
NSString *appSupportPath = paths.firstObject;
NSString *appDir = [appSupportPath stringByAppendingPathComponent:@"com.example.app"];

La prima lansare, directorul Application Support poate să nu existe — trebuie creat folosind createDirectory(at:withIntermediateDirectories:). Aceasta îl diferențiază de Documents Directory, care este creat automat de sistem.

Ce date să stochezi în Application Support

Application Support este potrivit pentru o gamă largă de date pe care aplicația le utilizează pentru funcționarea sa. Alegerea corectă a datelor pentru acest director îmbunătățește organizarea sistemului de fișiere și simplifică backup-ul.

Baze de date Core Data și Realm

Fișierele SQLite Core Data sunt create implicit în Application Support. Realm recomandă, de asemenea, plasarea bazelor de date în acest director. Aceasta izolează documentele utilizatorului de bazele de date interne ale aplicației.

Fișiere de configurare

JSON, plist, fișiere XML cu setări ale aplicației, Feature Flags, metadate stocate în cache despre utilizator (dar nu token-uri de autentificare — pentru acestea este Keychain).

Tip de dateApplication SupportAlternativă
SQLite Core DataDa (implicit)
Configurații .plist / .jsonDaUserDefaults (pentru simple)
Materiale de referință descărcateDaDocuments (dacă pentru utilizator)
Jurnale aplicațieiCondiționatCaches (pentru jurnale)
Token-uri de autentificareNuKeychain

Criteriul de selecție: dacă datele sunt create și utilizate de aplicație, nu de utilizator, și trebuie păstrate între lansări — locul lor este în Application Support.

Core Data și Application Support

Core Data — unul dintre principalii consumatori ai Application Support. La crearea NSPersistentContainer, Core Data plasează automat fișierele SQLite în Library/Application Support cu un nume unic bazat pe numele modelului.

Înțelegerea locului unde Core Data stochează fișierele este critică pentru migrări, backup și depanare. Fișierele principale: .sqlite (date), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).

swift
import CoreData

// Crează containerul Core Data
let container = NSPersistentContainer(name: "MyAppModel")

// Director URL personalizat al magazinului
guard let appSupportURL = FileManager.default
    .urls(for: .applicationSupportDirectory,
        in: .userDomainMask).first else { return }

let storeURL = appSupportURL
    .appendingPathComponent("MyAppModel.sqlite")
let description = NSPersistentStoreDescription(url: storeURL)
container.persistentStoreDescriptions = [description]

La utilizarea sincronizării CloudKit pentru Core Data, fișierul SQLite rămâne în Application Support, iar CloudKit este utilizat ca strat de transport. În acest caz, este important să nu se excludă fișierele din backup — altfel sincronizarea între dispozitive poate fi afectată.

Application Support vs Documents Directory

Diferența dintre Application Support și Documents — una dintre cele mai importante pentru organizarea corectă a structurii de fișiere a aplicației iOS. Alegerea greșită poate duce la ștergerea accidentală a datelor importante ale aplicației de către utilizator sau, dimpotrivă, la imposibilitatea de a-și găsi propriile fișiere.

ParametruApplication SupportDocuments Directory
Acces utilizatorNu (ascuns)Prin iTunes File Sharing
Tip de dateDate de serviciu ale aplicațieiDocumente utilizator
Backup iCloudDa (implicit)Da (implicit)
Risc de ștergereScăzut (fără acces)Mediu (accesibil utilizatorului)
ExempluSQLite Core DataPDF exportat

Regulă simplă: dacă utilizatorul trebuie să vadă fișierul și să poată să îl șteargă — folosește Documents. Dacă fișierul este necesar aplicației pentru funcționare, dar utilizatorul nu trebuie să știe despre el — folosește Application Support. Dacă datele pot fi restaurate — folosește Caches.

Cele mai bune practici pentru lucrul cu Application Support

Lucrul cu Application Support necesită luarea în considerare a câtorva caracteristici care îl diferențiază de alte directoare din sandbox. Respectarea acestor practici ajută la evitarea pierderii de date, a problemelor de migrare și a comportamentului neașteptat al aplicației.

Crează întotdeauna directorul la prima lansare

Spre deosebire de Documents, Application Support poate să nu existe la prima lansare. Folosește createDirectory(at:withIntermediateDirectories:) cu parametrul withIntermediateDirectories: true pentru a garanta crearea întregului lanț de subdirectoare.

Folosește un subdirector cu Bundle Identifier

Crează un subdirector cu Bundle Identifier în interiorul Application Support. Aceasta izolează datele aplicației tale de datele altor aplicații (deși sandbox-ul asigură deja izolarea) și simplifică migrarea la schimbarea furnizorului.

swift
import Foundation

enum AppSupport {
    static func ensureDirectory() throws -> URL {
        let fm = FileManager.default
        let baseURL = try fm.url(
            for: .applicationSupportDirectory,
            in: .userDomainMask,
            appropriateFor: nil,
            create: true
        )
        let appDir = baseURL
            .appendingPathComponent(Bundle.main.bundleIdentifier ?? "default")
        try fm.createDirectory(at: appDir, withIntermediateDirectories: true)
        return appDir
    }
}

Respectarea acestor practici garantează că datele de serviciu ale aplicației sunt organizate corect, protejate împotriva ștergerii accidentale de către utilizator și restaurate corect din backup-uri.

Întrebări frecvente

Trebuie creat manual Application Support Directory?

Da, Application Support nu se creează automat la instalarea aplicației. Spre deosebire de Documents și Caches, pe care sistemul le creează la prima lansare, Application Support trebuie creat de dezvoltator folosind FileManager.createDirectory(at:withIntermediateDirectories:). Acest lucru se face de obicei în metoda application(_:didFinishLaunchingWithOptions:).

Poate utilizatorul să șteargă accidental datele din Application Support?

Nu, prin interfața standard iOS (Files, iTunes) utilizatorul nu are acces la Application Support. Cu toate acestea, la ștergerea aplicației în sine, întregul sandbox, inclusiv Application Support, este șters complet. Backup-ul în iCloud se păstrează până la restaurare sau ștergere manuală.

Este Application Support potrivit pentru stocarea videoclipurilor descărcate?

Pentru videoclipurile descărcate destinate utilizatorului, este mai bine să folosești Documents Directory — pentru ca utilizatorul să poată gestiona aceste fișiere prin Files. Dacă videoclipul face parte din cache-ul intern al aplicației (de exemplu, conținut offline pentru învățare), se poate folosi Application Support cu flag-ul isExcludedFromBackup pentru fișierele mari.

Cum să migrezi datele din Application Support la actualizarea aplicației?

Adaugă versionarea subdirectoarelor în interiorul Application Support. La actualizare, verifică versiunea curentă a datelor și, dacă este necesar, creează un nou subdirector, păstrându-l pe cel vechi pentru rollback. Șterge directorul vechi doar după confirmarea că toți utilizatorii au migrat cu succes la noua versiune de date.

Dimensiunea Application Support afectează viteza de lansare a aplicației?

Indirect — da. Dacă Application Support conține zeci de mii de fișiere mici, FileManager.enumerator poate încetini inițializarea. Se recomandă limitarea numărului de fișiere în Application Support (nu mai mult de 1000) și utilizarea bazelor de date (Core Data, Realm) în locul mai multor fișiere separate pentru date structurate.

Concluzii

  • Application Support — director pentru datele de serviciu ale aplicației, care nu sunt destinate accesului direct al utilizatorului.
  • Calea către director — FileManager.urls(for: .applicationSupportDirectory) sau NSSearchPathForDirectoriesInDomains cu NSApplicationSupportDirectory.
  • Directorul trebuie creat manual la prima lansare a aplicației.
  • Core Data plasează implicit bazele de date SQLite în Application Support.
  • Utilizatorul nu are acces la Application Support prin Files sau iTunes.
  • Fișierele din Application Support sunt salvate în backup în iCloud, dacă nu este setat isExcludedFromBackup.
  • Crează un subdirector cu Bundle Identifier pentru izolarea datelor și simplificarea migrării.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și