Подтвердить что ты не робот

Использовать CoreData или SQLite на iPhone?

Так как CoreData стал доступен для iPhone в ОС 3.0, это значит, что это ответ на постоянство данных и замена всех потребностей на прямой SQLite?

Какие существуют причины для использования SQLite? Каковы преимущества/недостатки SQLite vs. CoreData?

4b9b3361

Ответ 1

Это общий вопрос:

Таким образом, Core Data может значительно упростить ваш код, особенно для сложных объектных моделей. Вы получаете поддержку отменить/повторить почти бесплатно. Это также дает некоторые очень значимые преимущества производительности, особенно на iPhone. Несмотря на то, что это кажется противоречивым, учитывая, сколько накладных расходов вы считаете инфраструктурой, в большинстве случаев вы можете побить производительность настроенного вручную SQLite с использованием Core Data. На iPhone он отлично справляется с выборками для минимизации использования памяти.

Единственным недостатком, как указано, является то, что это ограничивает вас, требуя iPhone OS 3.0 для ваших конечных пользователей. Тем не менее, это не было проблемой для моих пользователей, и будет только меньше идти вперед.

Ответ 2

Это может быть меньшим преимуществом, но SQLite намного более переносима между платформами, поскольку Core Data является частью Cocoa, а SQLite - чистой C. Это означает, что если вы хотите перенести приложение на ПК, для экземпляр, у вас было бы меньше кода для перезаписи в случае использования чистого SQLite.

Затем, если вы хотите развить что-то еще кросс-платформу, используя локальную БД (не обязательно связанную с iPhone-приложениями), у вас уже есть некоторый опыт работы с SQLite.

Ответ 3

Если вы хотите, чтобы ваше приложение запускалось на iPhone, не работающем под OS 3.0, вам нужно будет использовать SQLite.

Однако использование CoreData (которое, как я полагаю, использует SQLite как бэкэнд) означает, что вам не нужно писать свой собственный код взаимодействия с базой данных, что довольно сложно, особенно когда вы выполняете отношения и т.д.

Я сам использую CoreData...