Основные преимущества использования Core Data в приложениях для iPhone:
- Сохранение ссылочной целостности
- Миграция управляемой модели при изменениях схемы
- предоставление объектного реляционного отображения
- Значительно упрощенный процесс вставки, соединения и запроса - например, объединения, как правило, выполняются с помощью "точечного" синтаксиса
- Наложение нескольких хранилищ (хотя поищите мой вопрос об стеке потока, чтобы узнать, работает ли он на sqllite, все еще ожидая ответа ...)
- Построение структурированных предикатов - вы можете создавать свои предикаты как объекты вместо встроенных встроенных SQL-операторов
- Рефлексивное хранилище данных - вы можете анализировать хранилище данных во время выполнения структурированным и статически анализируемым способом
Тем не менее, если ваше приложение уже разработано для работы с базой данных sqllite, вам действительно нужно спросить себя, готовы ли вы преобразовать ваше приложение.
Вам нужно будет сделать хотя бы следующие вещи:
- Перестройка всей схемы базы данных в моделях управляемых объектов Core Data
- Переписать все ваши запросы к базе данных и управление для использования Core Data
- Переписать все ваши модели, чтобы они были либо поддержаны сгенерированными Базовыми данными управляемыми объектами, либо расширяли их
- Импорт всех существующих данных вручную в базу данных Core Data
- Будьте готовы к написанию гораздо большего количества кода! Хотя Core Data обеспечивает хорошую объектную среду для работы с запросами и управлением хранилищем данных, это также происходит за счет многословия.
- Для продолжения предыдущего пункта, когда вы сделаете даже относительно небольшие изменения в своей схеме, вы будете готовы потратить относительно значительное количество времени на предоставление схемы и ее правильное применение к существующим схемам.
Дайте вам уже решить почти все эти проблемы, и вы получите выгоду от переноса существующего приложения в Core Data - это элегантность и соответствие последним технологиям. Вам придется приложить немало усилий, чтобы получить это, и, учитывая преимущества, которые, вероятно, не являются огромными, вы, возможно, сочтете, что это не стоит вашего времени.
Чтобы ответить на ваш второй вопрос, я не могу придумать причину для непосредственного использования sqllite, если вы используете Core Data, если честно. Я не уверен, что внешние объединения, к примеру, ужасно просты в Core Data. Однако вы обычно не используете Core Data таким образом - вы бы использовали его процедурно для создания того же эффекта, что и внешнее соединение в SQL.
Для статистики и прочего я бы по-прежнему использовал Core Data, поскольку он предоставляет некоторые фантастические функции агрегирования.
Обратите внимание: ничто не мешает вам использовать противоположный подход: использовать базовые данные для расширенной функциональности, пока вы не освоитесь с ними, а затем приступить к переносу существующего кода основных приложений для использования базовых данных.