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

47

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

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

Теги:
core-data
iphone

3 ответа

60
Лучший ответ

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

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

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

  • 0
    Странно, что они не всплыли в моем поиске. Может быть, мой поиск "coredata" имел значение. Должен ли этот пост быть удален?
11

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

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

  • 2
    Это то, что мне нравится в этом ... У меня есть приложение для iPhone, которое я перехожу на Android, и структуры данных - это то, о чем мне не нужно беспокоиться в процессе обучения.
2

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню