Как выбрать способ хранения данных в iOS-приложении?

«Как выбрать способ хранения данных в iOS-приложении?» — вопрос из категории Базы данных, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Выбор зависит от типа, объема и требований к данным. Основные варианты:

Технология Назначение Пример использования
UserDefaults Простые настройки и флаги (логин, темы). UserDefaults.standard.set(true, forKey: "isOnboardingCompleted")
Keychain Безопасное хранение чувствительных данных (токены, пароли). Использовать через Security framework или обертки вроде KeychainAccess.
Core Data Сложные реляционные данные с объектным графом, требующие миграций, фильтрации. Приложения с оффлайн-режимом (каталоги, заметки).
Realm Альтернатива Core Data. Проще в освоении, но добавляет стороннюю зависимость. Аналогично Core Data для проектов, где важна скорость разработки.
SQLite (через FMDB и т.д.) Прямая работа с SQL, полный контроль. Специфичные задачи, требующие сложных SQL-запросов.
FileManager Работа с файлами (изображения, документы, кэш). FileManager.default.urls(for: .documentDirectory, ...)

Краткий гайд:

  1. Настройки пользователя → UserDefaults.
  2. Пароли/токены → Keychain.
  3. Структурированные данные для оффлайн-работы → Core Data или Realm.
  4. Кэшированные изображения/файлы → FileManager.