Используйте CoreData или SQLite на iPhone? [закрытый]


поскольку CoreData стала доступна для iPhone в OS 3.0, это должно быть ответом на сохранение данных и заменить все потребности в direct SQLite?

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

3   51  

3 ответа:

Это общий вопрос здесь:

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

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

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

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

Если вы хотите, чтобы ваше приложение работало на iPhones, а не на OS 3.0, вам придется использовать SQLite.

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

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