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