2011-12-05 3 views
0

В нашем приложении мы загружаем около 48 файлов sqlite размером около 300 КБ и сохраняем их на диске. Когда пользователь переходит в модуль, подмножество данных из любого файла считывается и отображается на основе некоторых условий. Когда пользователь прокручивается в модуле, когда scrollview прекращает прокрутку, мы определяем положение, в котором оно остановилось, и, соответственно, запрашиваем соответствующий файл sqlite для получения данных и отображения на экране. Это занимает около 2 секунд, чтобы показать данные пользователю. Мы хотим оптимизировать это, и я прочитал, что запрос CoreData вместо sqlite-файлов может сделать это быстрее.Приведение данных sqlite в CoreData

Итак, вопрос в том, должны ли мы попытаться поместить данные из каждого файла sqlite в CoreData, а затем всегда запрашивать CoreData. Меня беспокоит то, что было бы слишком много данных, которые нужно было бы вставить таким образом, так как у нас есть 48 файлов. Другой подход заключается только в том, что подмножество данных, которые должны быть загружены, должно быть загружено в CoreData, а не во все файлы. Но это будет означать, что перед отображением данных мы определяем, была ли она уже выбрана и доступна в CoreData, иначе мы запрашиваем sqlite. Любые предложения относительно того, что будет лучшим способом?

ответ

1

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

К тому же у вас, похоже, создается впечатление, что все данные должны будут храниться в гигантском файле базы данных в Core Data - это не тот случай. У вас может быть много управляемых объектных моделей файлов (это файлы базы данных с конечными продуктами для Core Data, называемые .xcdatamodeld) и открывать их выборочно.

Лучше всего сделать некоторые исследования, попытаться найти критические различия между основными данными и использованием SQLite напрямую. У них обоих есть свое место. Основные данные велики в правильных обстоятельствах - это не реляционная база данных, это графический объект и менеджер персистентности, и это имеет важные последствия. Основные данные были оптимизированы для луны и спины, поэтому, если вы используете его в правильных обстоятельствах, это здорово - хорошая производительность и делает некоторые тяжелые подъемы, чтобы остановить вас. Но в других случаях лучшим вариантом было бы прямое использование SQLite. См., Например, this blog post о ком-то, кто перешел от Core Data к SQLite.

Также проверьте this nice article на отличиях. И, конечно, читайте собственные руководства от Apple, и wikipedia page.

Нам сложно ответить на вопрос, который вы задали, но если у вас есть вопросы о некоторых более конкретных аспектах основных данных, опубликуйте несколько новых вопросов - на этот вопрос легче ответить.

Смежные вопросы