Application Support: τι είναι, αποθήκευση ρυθμίσεων και Core Data

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-07-10 Χρόνος ανάγνωσης: 10 λεπ

Application Support — είναι ένας κατάλογος στο sandbox της εφαρμογής 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 — είναι ένας κατάλογος στο sandbox της εφαρμογής 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 απαιτεί τη λήψη υπόψη αρκετών χαρακτηριστικών που το διακρίνουν από άλλους καταλόγους στο sandbox. Η τήρηση αυτών των πρακτικών βοηθά στην αποφυγή απώλειας δεδομένων, προβλημάτων μετεγκατάστασης και απροσδόκητης συμπεριφοράς της εφαρμογής.

Δημιουργείτε πάντα τον κατάλογο κατά την πρώτη εκκίνηση

Σε αντίθεση με το Documents, το Application Support μπορεί να μην υπάρχει κατά την πρώτη εκκίνηση. Χρησιμοποίησε το createDirectory(at:withIntermediateDirectories:) με την παράμετρο withIntermediateDirectories: true για να εγγυηθείς τη δημιουργία ολόκληρης της αλυσίδας υποκαταλόγων.

Χρησιμοποίησε υποκατάλογο με Bundle Identifier

Δημιούργησε έναν υποκατάλογο με Bundle Identifier μέσα στο Application Support. Αυτό απομονώνει τα δεδομένα της εφαρμογής σου από δεδομένα άλλων εφαρμογών (αν και το sandbox παρέχει ήδη απομόνωση) και απλοποιεί τη μετεγκατάσταση κατά την αλλαγή παρόχου.

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. Ωστόσο, κατά τη διαγραφή της ίδιας της εφαρμογής, ολόκληρο το sandbox, συμπεριλαμβανομένου του Application Support, διαγράφεται πλήρως. Το αντίγραφο ασφαλείας στο iCloud διατηρείται μέχρι την επαναφορά ή τη χειροκίνητη διαγραφή.

Είναι το Application Support κατάλληλο για αποθήκευση ληφθέντων βίντεο;

Για ληφθέντα βίντεο που προορίζονται για τον χρήστη, είναι καλύτερο να χρησιμοποιήσετε το Documents Directory — ώστε ο χρήστης να μπορεί να διαχειρίζεται αυτά τα αρχεία μέσω του Files. Εάν το βίντεο είναι μέρος της εσωτερικής προσωρινής μνήμης της εφαρμογής (π.χ., περιεχόμενο εκτός σύνδεσης για εκμάθηση), μπορεί να χρησιμοποιηθεί το Application Support με τη σημαία isExcludedFromBackup για μεγάλα αρχεία.

Πώς να μετεγκαταστήσετε δεδομένα από το Application Support κατά την ενημέρωση της εφαρμογής;

Πρόσθεσε εκδοσήμανση υποκαταλόγων μέσα στο Application Support. Κατά την ενημέρωση, έλεγξε την τρέχουσα έκδοση δεδομένων και εάν χρειάζεται, δημιούργησε έναν νέο υποκατάλογο, διατηρώντας τον παλιό για επαναφορά. Διέγραψε τον παλιό κατάλογο μόνο μετά την επιβεβαίωση ότι όλοι οι χρήστες έχουν μετεγκατασταθεί επιτυχώς στη νέα έκδοση δεδομένων.

Επηρεάζει το μέγεθος του 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. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης