Что такое постоянное хранилище (Persistent Storage) в iOS?

«Что такое постоянное хранилище (Persistent Storage) в iOS?» — вопрос из категории Управление памятью, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Постоянное хранилище (Persistent Storage) в iOS — это механизм сохранения данных приложения между его запусками и даже после перезагрузки устройства. Данные хранятся во внутренней памяти устройства.

Основные технологии:

Технология Назначение Пример использования
UserDefaults Простые ключ-значения (настройки, флаги). Сохранение выбранной пользователем темы.
Файловая система (FileManager) Произвольные файлы (документы, изображения, кэш). Сохранение загруженного PDF-документа.
Core Data Объектно-графовая и реляционная модель. Сложные структурированные данные. Приложение для учета задач или каталог товаров.
SQLite Реляционная база данных (часто через обертку, например, GRDB). Аналогично Core Data, с прямым SQL-контролем.
Keychain Безопасное хранение чувствительных данных (пароли, токены). Токены аутентификации (OAuth, JWT).

Примеры кода:

  1. UserDefaults:

    // Запись
    UserDefaults.standard.set("dark", forKey: "appTheme")
    // Чтение
    let theme = UserDefaults.standard.string(forKey: "appTheme")
  2. Сохранение файла в Documents:

    let fileURL = FileManager.default
        .urls(for: .documentDirectory, in: .userDomainMask)[0]
        .appendingPathComponent("data.json")
    let data = "{"key": "value"}".data(using: .utf8)!
    try data.write(to: fileURL)

Важно: Данные в постоянном хранилище удаляются вместе с приложением, кроме данных в Keychain, которые могут сохраняться (при соответствующей настройке kSecAttrAccessGroup).