Чтобы уточнить, что написал Джергасон. Базовые данные - это объектно-реляционное отображение (ORM), аналогичное Hibernate в мире Java. Он абстрагирует реальную механику хранения данных (таких как файлы SQL или .plist) от вашего кода. Вашему коду просто нужно иметь дело с согласованной объектно-ориентированной средой для извлечения объектов, их обновления и сохранения. Базовые данные поддерживают некоторый уровень транзакций ACID, но не 2-фазные фиксации. На iPhone настройки по умолчанию для Core Data оборачивают базы данных sqlite слоем ORM.
Одним из интересных побочных преимуществ использования Core Data является инструмент для визуального проектирования модели данных и создания классов модели. Если у вас большая модель, это может сэкономить много времени в классах моделей ручного кодирования.
Еще одним интересным преимуществом Core Data является возможность переноса базы данных из одной версии модели в другую. Это очень важно в мире iPhone, так как вы можете изменить свою модель данных с одной версии вашего приложения на другую. Базовые данные предоставляют довольно простой способ переноса постоянных данных из старой модели в новую, без необходимости написания тонны кода миграции. Вы просто определяете карту миграции и добавляете несколько строк кода к вашему делегату приложения, и все конвертируется для вас.
Базовые данные на iPhone предназначены для мобильной среды. Если вы извлекаете все строки в таблице в массив, это на самом деле не вытягивает все в память. Он создает то, что Apple называет ошибочным массивом, который является просто объектом, похожим на NSArray. При доступе к различным элементам массива Core Data извлекает эти объекты (строки) при использовании, а не по запросу. Это экономит память и помогает вашему приложению работать быстрее.
В целом, это довольно полнофункциональный слой ORM, не такой богатый, как Hibernate, но достаточный для этой среды.