Application Support: шта је то, чување конфигурација и Core Data

Аутор: IT Sectr Објављено: 2026-07-10 Време читања: 10 мин

Application Support — је директоријум у пешчанику iOS апликације, намењен за чување помоћних података неопходних за рад апликације, али које не креира директно корисник. Према Apple File System Basics (2024), овај директоријум је оптималан за конфигурационе датотеке, SQLite базе Core Data, кеширане документе и друге податке које апликација самостално генерише. За разлику од Documents Directory, Application Support се не приказује у iTunes File Sharing и корисник нема директан приступ њему, што штити службене податке од случајног брисања.

Главно

  • Application Support — директоријум за податке које апликација креира за сопствени рад, а нису намењени кориснику.
  • Датотеке из Application Support се аутоматски бекапирају у iCloud и iTunes, ако није постављен флаг искључења.
  • Путања до директоријума — NSApplicationSupportDirectory или FileManager.urls(for: .applicationSupportDirectory).
  • Core Data подразумевано смешта SQLite базе у Application Support.
  • Корисник нема директан приступ Application Support-у преко Files или iTunes-а.

Шта је Application Support у iOS-у?

Application Support — је директоријум у пешчанику iOS апликације, намењен за чување података које апликација креира и користи за свој рад, али који нису кориснички документи. Ово је главно место за конфигурације, базе података, кеширане метаподатке и друге помоћне датотеке.

iOS издваја Application Support као посредни ниво између Documents (кориснички подаци) и Caches (привремени подаци). Датотеке у Application Support-у могу бити релативно трајне, али корисник не би требало да има директан приступ њима — то га разликује од Documents Directory.

Према Apple Developer Documentation (2024), Application Support је препоручено место за чување SQLite база Core Data, Realm датотека, конфигурација у JSON/plist формату, преузетих референтних материјала и других података које апликација користи, али које корисник није експлицитно креирао.

Важно: подразумевано, Application Support је укључен у резервну копију iCloud и iTunes. Ако апликација чува велике количине података који се могу обновити у овом директоријуму (нпр. преузета упутства), потребно је поставити флаг isExcludedFromBackup за одговарајуће датотеке.

Како добити путању до Application Support-а

У Swift-у путања до Application Support Directory-ја се добија преко FileManager.urls(for: .applicationSupportDirectory). Apple препоручује креирање поддиректоријума са именом апликације унутар Application Support-а ради изолације података.

swift
import Foundation

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

// Креирај поддиректоријум апликације
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C користи NSSearchPathForDirectoriesInDomains са NSApplicationSupportDirectory. Слично Swift-у, препоручује се креирање поддиректоријума са именом апликације.

objective-c
@import Foundation;

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

При првом покретању, директоријум Application Support можда не постоји — потребно га је креирати помоћу createDirectory(at:withIntermediateDirectories:). То га разликује од Documents Directory-ја, који систем креира аутоматски.

Које податке чувати у Application Support-у

Application Support је погодан за широк спектар података које апликација користи за свој рад. Правилан избор података за овај директоријум побољшава организацију датотечног система и поједностављује резервно копирање.

Core Data и Realm базе података

SQLite датотеке Core Data-е се подразумевано креирају у Application Support-у. Realm такође препоручује смештање база података у овај директоријум. Ово изолује корисничке документе од интерних база података апликације.

Конфигурационе датотеке

JSON, plist, XML датотеке са подешавањима апликације, Feature Flags, кеширани метаподаци о кориснику (али не аутентификациони токени — за њих је Keychain).

Тип податакаApplication SupportАлтернатива
SQLite Core DataДа (подразумевано)
Конфигурације .plist / .jsonДаUserDefaults (за једноставне)
Преузети референтни материјалиДаDocuments (ако су за корисника)
Евиденције апликацијеУсловноCaches (за евиденције)
Токени за аутентификацијуНеKeychain

Критеријум избора: ако податке креира и користи апликација, а не корисник, и треба их сачувати између покретања — њихово место је у Application Support-у.

Core Data и Application Support

Core Data — један од главних потрошача Application Support-а. При креирању NSPersistentContainer-а, Core Data аутоматски смешта SQLite датотеке у Library/Application Support са јединственим именом заснованим на називу модела.

Разумевање где Core Data чува датотеке је критично за миграције, резервно копирање и отклањање грешака. Главне датотеке: .sqlite (подаци), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).

swift
import CoreData

// Креирај Core Data контејнер
let container = NSPersistentContainer(name: "MyAppModel")

// Прилагођени URL директоријум продавнице
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]

При коришћењу CloudKit синхронизације Core Data-е, SQLite датотека остаје у Application Support-у, а CloudKit се користи као транспортни слој. У овом случају је важно не искључивати датотеке из резервне копије — иначе синхронизација између уређаја може бити поремећена.

Application Support vs Documents Directory

Разлика између Application Support-а и Documents-а — једна од најважнијих за правилну организацију датотечне структуре iOS апликације. Погрешан избор може довести до тога да корисник случајно обрише важне податке апликације или, обрнуто, не може да пронађе своје датотеке.

ПараметарApplication SupportDocuments Directory
Приступ корисникаНе (скривен)Преко iTunes File Sharing
Тип податакаСлужбени подаци апликацијеКориснички документи
Резервна копија iCloudДа (подразумевано)Да (подразумевано)
Ризик од брисањаНизак (без приступа)Средњи (доступан кориснику)
ПримерSQLite Core DataИзвезени PDF

Једноставно правило: ако корисник треба да види датотеку и да је може обрисати — користи Documents. Ако је датотека потребна апликацији за рад, али корисник не треба да зна за њу — користи Application Support. Ако се подаци могу обновити — користи Caches.

Најбоље праксе за рад са Application Support-ом

Рад са Application Support-ом захтева узимање у обзир неколико карактеристика које га разликују од других директоријума у пешчанику. Придржавање ових пракси помаже у избегавању губитка података, проблема са миграцијом и неочекиваног понашања апликације.

Увек креирај директоријум при првом покретању

За разлику од Documents-а, Application Support можда не постоји при првом покретању. Користи createDirectory(at:withIntermediateDirectories:) са параметром withIntermediateDirectories: true да би се гарантовало креирање целог ланца поддиректоријума.

Користи поддиректоријум са Bundle Identifier-ом

Креирај поддиректоријум са Bundle Identifier-ом унутар Application Support-а. Ово изолује податке твоје апликације од података других апликација (иако пешчаник већ обезбеђује изолацију) и поједностављује миграцију при промени добављача.

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
    }
}

Придржавање ових пракси гарантује да су службени подаци апликације правилно организовани, заштићени од случајног брисања од стране корисника и правилно обновљени из резервних копија.

Често постављана питања

Да ли је потребно ручно креирати Application Support Directory?

Да, Application Support се не креира аутоматски при инсталацији апликације. За разлику од Documents и Caches, које систем креира при првом покретању, Application Support мора да креира програмер помоћу FileManager.createDirectory(at:withIntermediateDirectories:). Ово се обично ради у методи application(_:didFinishLaunchingWithOptions:).

Може ли корисник случајно обрисати податке из Application Support-а?

Не, преко стандардног интерфејса iOS (Files, iTunes) корисник нема приступ Application Support-у. Међутим, при брисању саме апликације, цео пешчаник, укључујући Application Support, се потпуно брише. Резервна копија у iCloud-у се чува до тренутка обнављања или ручног брисања.

Да ли је Application Support погодан за чување преузетих видеа?

За преузете видее намењене кориснику, боље је користити Documents Directory — да би корисник могао да управља овим датотекама преко Files-а. Ако је видео део интерног кеша апликације (нпр. офлајн садржај за учење), може се користити Application Support са флагом isExcludedFromBackup за велике датотеке.

Како мигрирати податке из Application Support-а при ажурирању апликације?

Додај верзионисање поддиректоријума унутар Application Support-а. При ажурирању провери тренутну верзију података и по потреби креирај нови поддиректоријум, а стари сачувај за rollback. Обриши стари директоријум тек након потврде да су сви корисници успешно мигрирали на нову верзију података.

Да ли величина Application Support-а утиче на брзину покретања апликације?

Индиректно — да. Ако Application Support садржи десетине хиљада малих датотека, FileManager.enumerator може успорити иницијализацију. Препоручује се ограничавање броја датотека у Application Support-у (не више од 1000) и коришћење база података (Core Data, Realm) уместо више појединачних датотека за структуриране податке.

Закључци

  • Application Support — директоријум за службене податке апликације који нису намењени директном приступу корисника.
  • Путања до директоријума — FileManager.urls(for: .applicationSupportDirectory) или NSSearchPathForDirectoriesInDomains са NSApplicationSupportDirectory.
  • Директоријум је потребно ручно креирати при првом покретању апликације.
  • Core Data подразумевано смешта SQLite базе у Application Support.
  • Корисник нема приступ Application Support-у преко Files-а или iTunes-а.
  • Датотеке из Application Support-а се бекапирају у iCloud, ако није постављено isExcludedFromBackup.
  • Креирај поддиректоријум са Bundle Identifier-ом за изолацију података и поједностављење миграције.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође