2011-02-11 3 views
23

Мне интересно, если я должен сохранить данные в своем приложении на plist или использовать Core Data.Должен ли я сохранять данные plist или Core?

Мое приложение просто в основном сохраняет твиты от временной шкалы и других пользователей. Это меньше, чем несколько hunderd kB (около 200 кб в моем тестировании). В чем преимущества использования основных данных?

ответ

22

Я бы не рассматривал plists для чего-либо, кроме сохранения простых настроек и действительно базовой структуры данных. Плюс производительность, выбор и сохранение данных в plists могут быть довольно медленными.

После долгой борьбы с Coredata, теперь, когда я наконец ее получу, я бы выбрал ее во что бы то ни было в любой день. Да, у него есть немного крутая кривая обучения, но есть так много, что вы получаете «бесплатно» с ней, я бы определенно потратил время на изучение и исследование.

Coredata предоставит вам гибкость для расширения ваших объектных моделей по мере необходимости, легко извлекает объекты из стойкого хранилища на основе определенных параметров, создает отношения между моделями, управление памятью и список можно продолжать.

Coredata действительно хорошо документирован Apple, поэтому вы найдете все, что вам нужно, чтобы начать работу и многое другое. Есть примеры, примеры проектов, видео, вы называете это, поэтому я бы определенно рекомендовал вам взглянуть, если вы заинтересованы в производительности, масштабируемости и немного веселья :)

+0

Но действительно ли это стоит нескольких хундовских данных? Я также планирую делать Core Data в какой-то момент, но у меня есть только несколько недель до бета-тестирования ... Так вы думаете, что я должен придерживаться plist? –

+3

Ну, это не так, как вы не можете решить переехать в Корадату в будущем, если возникнет такая необходимость. Если вам нужна скорость на рынок прямо сейчас, пойдите с plists, поскольку это будет кусок пирога, чтобы осуществить. – Rog

13

Как уже отмечалось, plist и чтение из plist почти тривиально, используя NSDictionary. Так что это может быть хорошим способом начать.

При этом, если ваша модель данных станет богаче с дополнительными атрибутами и отношениями, то Core Data обеспечит лучшее масштабирование и лучшую поддержку. Xcode упрощает разработку вашей объектной модели (схемы) - и даже генерирует исходные файлы, если вы решите подкласс NSManagedObject (который я почти всегда делаю).

Нижняя линия: Plist ускорит работу; Core Data даст вам много энергии, когда придет время.

+2

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

+1

Я пришел к такому же выводу. В одном из моих приложений был небольшой набор некоторых базовых данных, поэтому я решил использовать plists, а не Core Data. В целом, я считаю, что лучше всего использовать более сложные, более мощные API/функции, если они действительно нужны. – LucasTizma

38

только некоторые советы, которые могут помочь в дизайне вашего приложения.

Прежде всего было бы приятно подчеркнуть, что CoreData на самом деле не сравнима с plist. Я имею в виду, что CoreData похож на уровень абстракции модели данных над хранилищем данных, который позволяет вам управлять отношениями и выбирать правила между различными объектами данных. За слоем CoreData хранилище данных может быть основано на plist (только osx), базе данных sqlite или двоичном объекте.

Это также важно, потому что вы можете понять сферу применения CoreData: если вам нужно поддерживать логическую связь между различными объектами данных или выполнять несколько запросов по тем же данным или сериализовать/десериализовывать большие структуры данных, CoreData обеспечивает лучшее и быстрое решение, чтобы это произошло. Если вам просто нужно сохранить простой список элементов, которые нужно просто отобразить, нужно будет отсканировать файл plist.

Другим важным пунктом решения является тип данных, который необходимо хранить: согласно Apple, файлы plist оптимизированы для строк, чисел, дат и некоторых двоичных данных. Это то, что Apple, говорит о PLIST:

Note that property lists should be used for data that consists primarily 
of strings and numbers. They are very inefficient when used with large blocks 
of binary data.
Many applications require a mechanism for storing information that will 
be needed at a later time. For situations where you need to store small 
amounts of persistent data — say less than a few hundred kilobytes — property 
lists offer a uniform and convenient means of organizing, storing, and 
accessing the data.

Это означает, что если вам нужно хранить «тяжелый» материал или сложные объекты и управлять ими (например, поиск через них), система кэширования для Plist парсер может быть неэффективным (в основном на iOS).

На мой взгляд, ваша идея хранить около 200 тыс. Линейных твитов (около 1000 твитов?) С временной шкалы будет отлично работать с решением на основе plist. Также учтите, что парсинг-анализатор сильно ускоряется с небольшой структурой данных, тогда у вас будет более высокая производительность и низкое использование памяти (в основном во время запуска), потому что вам не нужно инициализировать CoreData или любую другую «оболочку кода» вокруг вашего хранилища данных. Простое на лету использование NSDictionary, NSArray и так далее.

И последнее, но не менее важное: реализация plist достаточно дешева, чтобы дать вам возможность перейти на CoreData на следующем шаге.

То, что я имею в виду, что иногда это не нужно использовать танк, если вам нужно ловить муха :-)

Надеется, что это помогает. Ciao!

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