Базовые данные против SQLitePersistentObjects

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

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


person indragie    schedule 19.02.2010    source источник


Ответы (5)


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

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

person Marcus S. Zarra    schedule 19.02.2010
comment
это не так, потому что SQLitePersistentObjects - это ORM. - person Simon Woodside; 13.04.2010
comment
Это потому, что вы должны использовать для этого технологии Apple, поэтому они написали Core Data. OP стоит потратить время на изучение Core Data и понимание технологии. - person Marcus S. Zarra; 13.04.2010
comment
Ваш ответ сравнивает использование чистого SQLite с использованием Core Data. Это неверное сравнение. SQLPO! = Чистый SQLite. Я согласен с тем, что исследование Core Data - это хорошо, но нельзя сразу отказываться от альтернатив. Core Data - это пример более мрачного момента в дизайне Apple API. Сравните это с ActiveRecord в рельсах и другими хорошими ORM ... - person Simon Woodside; 07.09.2010

Как автор книги «Постоянные объекты SQLite», я говорю: используйте Core Data.

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

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

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

person Jeff LaMarche    schedule 18.06.2010
comment
Джефф, очень жаль, что ты отказался от этого, потому что платформе действительно нужна отличная ORM, а не Core Data. - person Simon Woodside; 07.09.2010

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

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

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

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

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

person karl    schedule 13.09.2010

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

person cagreen    schedule 19.02.2010

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

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

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

person Simon Woodside    schedule 13.04.2010
comment
Какой предыдущий ответ? Прямо сейчас тот, кто выше вас, - это парень, который написал SQLPO, хотя я сомневаюсь, что вы имели в виду именно этого, скорее всего, SO просто переставил ответы. А поточнее? - person Alex Gosselin; 07.09.2010
comment
Судя по датам, я, должно быть, имел в виду ответ Маркуса С. Зарры. Я понимаю, что использование Core Data - это евангелие, но оно по-прежнему полно ошибок и раздражающих вещей, которые ненавидят все, кто использовал, например, ActiveRecord. Никто не хочет этого слышать, но будьте осторожны. - person Simon Woodside; 07.09.2010