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