Ответ 1
Хотя Core Data является потомком Apple Enterprise Object Framework, объектно-реляционный картограф (ORM), который был/сильно привязан к реляционная база данных, Core Data не является ORM. Это, на самом деле, структура управления графом объектов. Он управляет потенциально очень большим графиком экземпляров объектов, позволяя приложению работать с графиком, который не будет полностью вписываться в память, если при необходимости устранить объекты в и из памяти. Core Data также управляет ограничениями на свойства и отношения и целостность ссылок на maintins (например, сохраняя прямую и обратную ссылки согласованными, когда объекты добавляются/удаляются в/из отношения). Таким образом, базовые данные являются идеальной основой для создания "модельного" компонента архитектуры MVC.
Чтобы реализовать управление графом, Core Data использует sqlite как хранилище дисков. Он мог быть реализован с использованием другой реляционной базы данных или даже нереляционной базы данных, такой как CouchDB. Как указывали другие, Core Data также может использовать XML или двоичный формат или написанный пользователем атомный формат в качестве бэкэнд (хотя для этих параметров требуется, чтобы весь граф объекта вписывался в память). Если вы заинтересованы в том, как Core Data реализуется на базе sqlite, вы можете проверить структуру OmniGroup OmniDataObjects, реализацию с открытым исходным кодом подмножество API данных ядра. Структура BaseTen также является реализацией Core Data API с использованием PostgreSQL в качестве бэкэнд.
Поскольку базовые данные не предназначены для ORM для sqlite, он не может читать произвольную схему sqlite. И наоборот, вы не должны полагаться на возможность чтения хранилищ данных SQL Server с другими инструментами sqlite; схема представляет собой деталь реализации, которая может измениться.
Таким образом, на самом деле нет никакого конфликта между использованием Core Data или sqlite напрямую. Если вам нужна реляционная база данных, используйте sqlite (напрямую или через одну из оберток Objective-C, например FMDB), или реляционную базу данных сервер. Тем не менее, вы все равно можете изучить Core Data для использования в качестве структуры управления графами объектов. В сочетании с классами контроллеров Apple и виджетами, совместимыми с привязкой к ключевому значению, вы можете реализовать полную архитектуру MVC с очень маленьким кодом.