Базовые данные против SQLitePersistentObjects - PullRequest
3 голосов
/ 19 февраля 2010

Я создаю приложение для iPhone и пытаюсь выбрать одно из двух решений для постоянного хранилища.

Базовые данные или SQLitePersistentObjects .По сути, все, что нужно моему приложению, - это способ сохранить массив объектов модели, а затем снова загрузить их для отображения в UITableView.Ничего сложного.Базовые данные, похоже, имеют гораздо более высокую кривую обучения, чем простые в использовании объекты SQLitePersistentObjects.Есть ли какие-либо очевидные преимущества использования Core Data над объектами SQLitePersistentObjects в моем случае?

Ответы [ 5 ]

13 голосов
/ 18 июня 2010

Как автор SQLite Persistent Objects, я говорю: используйте Core Data.

Я написал SQLPO, когда Core Data не существовало на телефоне.Хотя я горжусь тем, что я сделал с SQLPO, и хотя мне нравятся некоторые вещи в его подходе лучше, чем в Core Data (в частности, нет необходимости поддерживать отдельные файлы классов и модель данных), движок, лежащий в основе Core Data, гораздо более зрелый иВ него вложено гораздо больше инженерных часов.Вот почему я отказался от разработки SQLPO, когда Core Data попала в iPhone SDK.

Я не проводил тесты, но я думаю, что при правильном использовании Core Data будет работать лучше почти во всех ситуациях большого объема.

SQLPO быстрее разрабатывается, поскольку всевы создаете файлы заголовков, но если ваши потребности в данных относительно невелики, я бы сказал, что вам лучше использовать Core Data.

1 голос
/ 13 сентября 2010

Некоторая информация о моем опыте работы с SQLitePersistentObjects.

Приложение, изначально разработанное для iOS 3.x с использованием SQLPO, прекрасно работает.Простота в использовании и т. Д. Сейчас я нахожусь в процессе переноса этого приложения на iOS 4, и все начинает становиться странным.

Теперь я вижу повреждения БД с непредсказуемой скоростью.

Просмотр SQLPOкод показывает, что существует только один оператор sqlite3_close, и он вызывается, когда БД не может быть открыта.

Я планирую добавить метод для явного закрытия БД и вызова этого из моего приложения, завершение делегатов и для iOS4методы didMovetoBackground.Может помочь избежать проблем с повреждением БД в SQLPO.

1 голос
/ 19 февраля 2010

Смотрите этот вопрос. Мой ответ на этот вопрос также относится и к вашему.

Core Data VS SQL Statement, какой gd для разработки iphone?

0 голосов
/ 13 апреля 2010

SQLitePersistentObjects, также известный как SQLLite Persistent Objects, совсем не то же самое, что прямой SQLite. Это ORM само по себе. Я еще не использовал его, но хотел исправить совершенно неправильный ответ, который дал предыдущий плакат.

И я серьезно подумываю об использовании, потому что Core Data - это боль.

См .: http://iphonedevelopment.blogspot.com/2008/08/sqlite-persistent-objects.html

0 голосов
/ 19 февраля 2010

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

...