Вы отлаживаете проблему Core Data в вашем приложении iOS или macOS. Данные выглядят неправильно в пользовательском интерфейсе, и вам нужно увидеть, что фактически хранится в базовом файле SQLite. Редактор модели Core Data в Xcode показывает вашу схему, но не позволяет вам просматривать фактические сохранённые данные. Таким образом, вы начинаете охоту — найдите контейнер приложения, найдите файл .sqlite и начните запускать сырые запросы против таблиц с именами вроде ZUSER и ZPOST, где каждый столбец имеет префикс Z и ничто не совпадает с вашими именами сущностей интуитивно.
Файлы SQLite Core Data сложно проверять
Core Data использует SQLite в качестве хранилища постоянных данных по умолчанию, но добавляет свои собственные соглашения. Имена сущностей получают префикс Z в названии таблицы. Атрибуты получают имена столбцов с префиксом Z. Отношения хранятся как целые иностранные ключи в столбцах, которые вы можете не сразу распознать. Есть таблица Z_METADATA и таблица Z_PRIMARYKEY, которые управляет Core Data внутри.
Ничего из этого не задокументировано способом, который делает ручную проверку легкой. Вы в итоге запускаете запросы вроде SELECT * FROM ZUSER; и пытаетесь сопоставить Z-префиксированные столбцы обратно вашей управляемой модели объекта. В Терминале, без подсветки синтаксиса и без визуальной сетки, это утомительно.
Xcode не помогает здесь. Нет встроенного браузера SQLite. Инструмент Instruments может профилировать операции Core Data, но он не покажет вам фактические данные строк. Вам нужен отдельный инструмент.
Просмотрите файлы SQLite Core Data с помощью Tome
Tome открывает файлы SQLite Core Data как любую другую базу данных. Перейдите в контейнер вашего приложения, найдите файл .sqlite и откройте его в Tome. Каждая таблица с префиксом Z появляется в боковой панели. Нажмите на одну, чтобы увидеть все строки и их значения в прокручиваемой сетке.
Посмотрите фактические данные
Когда ваше приложение показывает неправильное значение, откройте файл SQLite в Tome и проверьте фактически сохранённые данные. Значение неправильно в базе данных или это ошибка выборки/отображения? Визуальный доступ к сырым данным отвечает на этот вопрос в считанные секунды.
Проверьте отношения и метаданные
Просмотрите таблицу Z_PRIMARYKEY, чтобы увидеть, как Core Data отслеживает типы сущностей и первичные ключи. Проверьте столбцы иностранных ключей, чтобы убедиться, что отношения правильно сохранены. Проверьте Z_METADATA, чтобы увидеть хеш версии модели.
Запускайте диагностические запросы
Используйте редактор SQL запросов Tome, чтобы писать объединения по таблицам Z-префиксированных Core Data, фильтруйте для конкретных записей или проверяйте наличие осиротелых строк, которые могут указывать на проблему миграции. Подсветка синтаксиса и автодополнение облегчают чем запуск сырых запросов в Терминале.
Безопасно проверять, легко находить
Для Simulator ваш файл SQLite приложения находится глубоко внутри ~/Library/Developer/CoreSimulator/. Для приложения macOS проверьте ~/Library/Containers/ или ~/Library/Application Support/. Как только вы нашли файл, перетащите его на значок Tome на доке и начните просмотр.