Application Support: bu nima, konfiguratsiyalarni saqlash va Core Data

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

Application Support — iOS ilovasining sandboxidagi yordamchi ma'lumotlarni saqlash uchun mo'ljallangan katalogdir. Bu ma'lumotlar ilovaning ishlashi uchun zarur, lekin bevosita foydalanuvchi tomonidan yaratilmaydi. Apple File System Basics (2024) ma'lumotlariga ko'ra, bu katalog konfiguratsiya fayllari, Core Data SQLite ma'lumotlar bazalari, keshlangan hujjatlar va ilova mustaqil ravishda yaratadigan boshqa ma'lumotlar uchun maqbuldir. Documents Directory-dan farqli o'laroq, Application Support iTunes File Sharing'da ko'rsatilmaydi va foydalanuvchi unga to'g'ridan-to'g'ri kira olmaydi, bu esa xizmat ma'lumotlarini tasodifiy o'chirishdan himoya qiladi.

Asosiy ma'lumotlar

  • Application Support — ilova o'z ishi uchun yaratadigan, foydalanuvchi uchun mo'ljallanmagan ma'lumotlar katalogi.
  • Application Support fayllari, istisno bayrog'i o'rnatilmagan bo'lsa, iCloud va iTunes'da avtomatik zaxiralanadi.
  • Katalog yo'li — NSApplicationSupportDirectory yoki FileManager.urls(for: .applicationSupportDirectory).
  • Core Data sukut bo'yicha SQLite ma'lumotlar bazalarini Application Support'da joylashtiradi.
  • Foydalanuvchi Files yoki iTunes orqali Application Support'ga to'g'ridan-to'g'ri kira olmaydi.

iOS-da Application Support nima?

Application Support — iOS ilovasining sandboxidagi, ilova o'z ishi uchun yaratadigan va ishlatadigan, lekin foydalanuvchi hujjatlari bo'lmagan ma'lumotlarni saqlash uchun katalogdir. Bu konfiguratsiyalar, ma'lumotlar bazalari, keshlangan metama'lumotlar va boshqa yordamchi fayllar uchun asosiy joydir.

iOS Application Support'ni Documents (foydalanuvchi ma'lumotlari) va Caches (vaqtinchalik ma'lumotlar) o'rtasidagi oraliq daraja sifatida ajratadi. Application Support'dagi fayllar nisbatan doimiy bo'lishi mumkin, ammo foydalanuvchi ularga to'g'ridan-to'g'ri kira olmasligi kerak — bu uni Documents Directory'dan farqlaydi.

Apple Developer Documentation (2024) ma'lumotlariga ko'ra, Application Support Core Data SQLite ma'lumotlar bazalari, Realm fayllari, JSON/plist formatidagi konfiguratsiyalar, yuklab olingan ma'lumotnoma materiallari va ilova ishlatadigan, lekin foydalanuvchi aniq yaratmagan boshqa ma'lumotlar uchun tavsiya etilgan joydir.

Muhim: sukut bo'yicha Application Support iCloud va iTunes zaxira nusxasiga kiritilgan. Agar ilova ushbu katalogda tiklanadigan katta hajmdagi ma'lumotlarni saqlasa (masalan, yuklab olingan qo'llanmalar), tegishli fayllar uchun isExcludedFromBackup bayrog'ini o'rnatish kerak.

Application Support yo'lini qanday olish mumkin

Swift da Application Support Directory yo'li FileManager.urls(for: .applicationSupportDirectory) orqali olinadi. Apple ma'lumotlarni izolyatsiya qilish uchun Application Support ichida ilova nomi bilan pastki katalog yaratishni tavsiya qiladi.

swift
import Foundation

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

// Ilova pastki katalogini yaratish
let bundleID = Bundle.main.bundleIdentifier ?? "com.example.app"
let appDir = appSupportURL.appendingPathComponent(bundleID)
try fileManager.createDirectory(
    at: appDir,
    withIntermediateDirectories: true
)

Objective-C NSSearchPathForDirectoriesInDomains dan NSApplicationSupportDirectory bilan foydalanadi. Swift'dagi kabi, ilova nomi bilan pastki katalog yaratish tavsiya etiladi.

objective-c
@import Foundation;

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

Birinchi ishga tushirishda Application Support katalogi mavjud bo'lmasligi mumkin — uni createDirectory(at:withIntermediateDirectories:) yordamida yaratish kerak. Bu uni tizim tomonidan avtomatik yaratiladigan Documents Directory'dan farqlaydi.

Application Support'da qanday ma'lumotlarni saqlash kerak

Application Support ilova o'z ishi uchun foydalanadigan keng spektrli ma'lumotlar uchun mos keladi. Ushbu katalog uchun to'g'ri ma'lumot tanlash fayl tizimi tashkilotini yaxshilaydi va zaxira nusxalashni soddalashtiradi.

Core Data va Realm ma'lumotlar bazalari

SQLite fayllari Core Data sukut bo'yicha Application Support'da yaratiladi. Realm ham ma'lumotlar bazalarini ushbu katalogda joylashtirishni tavsiya qiladi. Bu foydalanuvchi hujjatlarini ilovaning ichki ma'lumotlar bazalaridan izolyatsiya qiladi.

Konfiguratsiya fayllari

JSON, plist, ilova sozlamalari bilan XML fayllar, Feature Flags, foydalanuvchi haqida keshlangan metama'lumotlar (lekin autentifikatsiya tokenlari emas — ular uchun Keychain).

Ma'lumot turiApplication SupportMuqobil
SQLite Core DataHa (sukut bo'yicha)
Konfiguratsiyalar .plist / .jsonHaUserDefaults (sodda uchun)
Yuklab olingan ma'lumotnoma materiallariHaDocuments (foydalanuvchi uchun bo'lsa)
Ilova jurnallariShartliCaches (jurnallar uchun)
Autentifikatsiya tokenlariYo'qKeychain

Tanlash mezoni: ma'lumotlar ilova tomonidan yaratiladi va ishlatiladi, foydalanuvchi tomonidan emas, va ishga tushirishlar orasida saqlanishi kerak bo'lsa — ularning joyi Application Support'dadir.

Core Data va Application Support

Core Data — Application Support'ning asosiy iste'molchilaridan biri. NSPersistentContainer yaratilganda, Core Data avtomatik ravishda SQLite fayllarini Library/Application Support'da model nomiga asoslangan noyob nom bilan joylashtiradi.

Core Data fayllarni qayerda saqlashini tushunish migratsiyalar, zaxira nusxalash va disk raskadrovka qilish uchun muhimdir. Asosiy fayllar: .sqlite (ma'lumotlar), .sqlite-wal (Write-Ahead Log), .sqlite-shm (Shared Memory).

swift
import CoreData

// Core Data konteynerini yaratish
let container = NSPersistentContainer(name: "MyAppModel")

// Maxsus do'kon URL katalogi
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 sinxronizatsiyasidan foydalanganda Core Data, SQLite fayli Application Support'da qoladi, CloudKit esa transport qatlami sifatida ishlatiladi. Bunday holda fayllarni zaxira nusxadan chiqarmaslik muhimdir — aks holda qurilmalar o'rtasidagi sinxronizatsiya buzilishi mumkin.

Application Support vs Documents Directory

Application Support va Documents o'rtasidagi farq iOS ilovasining fayl tuzilmasini to'g'ri tashkil qilish uchun eng muhimlaridan biridir. Noto'g'ri tanlov foydalanuvchi tomonidan muhim ma'lumotlarning tasodifiy o'chirilishiga yoki aksincha, o'z fayllarini topa olmasligiga olib kelishi mumkin.

ParametrApplication SupportDocuments Directory
Foydalanuvchi kirishiYo'q (yashirin)iTunes File Sharing orqali
Ma'lumot turiIlovaning xizmat ma'lumotlariFoydalanuvchi hujjatlari
iCloud zaxirasiHa (sukut bo'yicha)Ha (sukut bo'yicha)
O'chirish xavfiPast (kirish yo'q)O'rta (foydalanuvchi uchun mavjud)
MisolSQLite Core DataEksport qilingan PDF

Oddiy qoida: foydalanuvchi faylni ko'rishi va uni o'chira olishi kerak bo'lsa — Documents dan foydalaning. Fayl ilovaning ishlashi uchun kerak bo'lsa, lekin foydalanuvchi bu haqda bilmasligi kerak bo'lsa — Application Support dan foydalaning. Ma'lumotlarni tiklash mumkin bo'lsa — Caches dan foydalaning.

Application Support bilan ishlashning eng yaxshi amaliyotlari

Application Support bilan ishlash sandboxning boshqa kataloglaridan farqlaydigan bir nechta xususiyatlarni hisobga olishni talab qiladi. Ushbu amaliyotlarga rioya qilish ma'lumotlarni yo'qotish, migratsiya muammolari va ilonning kutilmagan xatti-harakatidan qochishga yordam beradi.

Birinchi ishga tushirishda har doim katalogni yarating

Documents'dan farqli o'laroq, Application Support birinchi ishga tushirishda mavjud bo'lmasligi mumkin. Barcha pastki kataloglar zanjirining yaratilishini kafolatlash uchun createDirectory(at:withIntermediateDirectories:) dan withIntermediateDirectories: true parametri bilan foydalaning.

Bundle Identifier bilan pastki katalogdan foydalaning

Application Support ichida Bundle Identifier bilan pastki katalog yarating. Bu sizning ilovangiz ma'lumotlarini boshqa ilovalar ma'lumotlaridan izolyatsiya qiladi (sandbox allaqachon izolyatsiyani ta'minlasa ham) va provayder o'zgarishida migratsiyani soddalashtiradi.

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

Ushbu amaliyotlarga rioya qilish ilovaning xizmat ma'lumotlari to'g'ri tashkil etilganligini, foydalanuvchi tomonidan tasodifiy o'chirishdan himoyalanganligini va zaxira nusxalardan to'g'ri tiklanganligini kafolatlaydi.

Tez-tez so'raladigan savollar

Application Support Directory-ni qo'lda yaratish kerakmi?

Ha, Application Support ilovani o'rnatishda avtomatik ravishda yaratilmaydi. Documents va Caches'dan farqli o'laroq, tizim ularni birinchi ishga tushirishda yaratadi, Application Support esa dasturchi tomonidan FileManager.createDirectory(at:withIntermediateDirectories:) yordamida yaratilishi kerak. Bu odatda application(_:didFinishLaunchingWithOptions:) metodida amalga oshiriladi.

Foydalanuvchi tasodifan Application Support'dagi ma'lumotlarni o'chira oladimi?

Yo'q, standart iOS interfeysi (Files, iTunes) orqali foydalanuvchi Application Support'ga kira olmaydi. Biroq, ilovaning o'zi o'chirilganda, butun sandbox, shu jumladan Application Support to'liq o'chiriladi. iCloud'dagi zaxira nusxa tiklash vaqtigacha yoki qo'lda o'chirishgacha saqlanadi.

Application Support yuklab olingan videolarni saqlash uchun mosmi?

Foydalanuvchi uchun mo'ljallangan yuklab olingan videolar uchun Documents Directory'dan foydalanish yaxshiroqdir — foydalanuvchi bu fayllarni Files orqali boshqara olishi uchun. Video ilovaning ichki keshi qismi bo'lsa (masalan, offline o'quv kontenti), katta fayllar uchun isExcludedFromBackup bayrog'i bilan Application Support ishlatilishi mumkin.

Ilovani yangilashda Application Support ma'lumotlarini qanday migratsiya qilish kerak?

Application Support ichida pastki kataloglarning versiyalashtirilishini qo'shing. Yangilash paytida joriy ma'lumotlar versiyasini tekshiring va kerak bo'lsa, yangi pastki katalog yarating, eskisini rollback uchun saqlang. Eski katalogni faqat barcha foydalanuvchilar ma'lumotlarning yangi versiyasiga muvaffaqiyatli o'tganligini tasdiqlaganidan keyin o'chiring.

Application Support hajmi ilovaning ishga tushirish tezligiga ta'sir qiladimi?

Bilvosita — ha. Agar Application Support o'n minglab kichik fayllarni o'z ichiga olsa, FileManager.enumerator ishga tushirishni sekinlashtirishi mumkin. Application Support'dagi fayllar sonini cheklash (1000 dan ko'p bo'lmagan) va strukturali ma'lumotlar uchun ko'plab alohida fayllar o'rniga ma'lumotlar bazalaridan (Core Data, Realm) foydalanish tavsiya etiladi.

Xulosa

  • Application Support — foydalanuvchining to'g'ridan-to'g'ri kirishi uchun mo'ljallanmagan ilovaning xizmat ma'lumotlari katalogi.
  • Katalog yo'li — FileManager.urls(for: .applicationSupportDirectory) yoki NSSearchPathForDirectoriesInDomains NSApplicationSupportDirectory bilan.
  • Katalogni ilovaning birinchi ishga tushirishida qo'lda yaratish kerak.
  • Core Data sukut bo'yicha SQLite ma'lumotlar bazalarini Application Support'da joylashtiradi.
  • Foydalanuvchi Files yoki iTunes orqali Application Support'ga kira olmaydi.
  • Application Support fayllari, isExcludedFromBackup o'rnatilmagan bo'lsa, iCloud'da zaxiralanadi.
  • Ma'lumotlarni izolyatsiya qilish va migratsiyani soddalashtirish uchun Bundle Identifier bilan pastki katalog yarating.

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