Подтвердить что ты не робот

Должен ли я сохранять данные plist или Core?

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Прежде всего было бы приятно подчеркнуть, что 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!

Ответ 3

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

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

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