Каковы некоторые преимущества использования Core Data?(в отличие от plist) - PullRequest
19 голосов
/ 16 июня 2011

Я относительно новичок в iOS и программировании, и раньше я делал приложение, но в нем использовался список хранения, который я сохранил в папке документов.Сейчас я думаю о переходе на Core Data, но это выглядит немного сложнее, и я не уверен, будет ли это работать так, как я хочу.У меня будет куча данных, которые мне нужно будет отобразить, поэтому я не уверен, что Core Data лучше для этого, так как кажется, что я не могу создать тип массива в файле .xcdatamodeld.Каковы некоторые другие преимущества Core Data?Это быстрее?Проще в использовании (после настройки)?

Обновление: Для всех, кто интересуется, я закончил приложение, и оно того стоило узнать, как использовать Core Data, и онобыло намного менее сложным, чем я первоначально думал.Делать это со списками было бы адом.То, как они это делают, поначалу казалось немного загадочным, но если вы просто начнете его использовать, вы получите его.Отношения действительно замечательные.

Ответы [ 2 ]

26 голосов
/ 16 июня 2011

Несколько преимуществ на моей голове:

  • Гораздо лучше управление памятью. С листом вы должны загрузить все это в память; с Core Data нужно загружать только те объекты, которые вы используете в данный момент. Кроме того, как только объекты загружаются, они обычно являются объектами "ошибки" заполнителя, данные свойств которых не загружаются, пока они вам не понадобятся.
  • В связи с вышесказанным, когда у вас есть изменения, вы можете сохранить только измененные объекты, а не весь набор данных.
  • Вы можете читать / записывать объекты вашей модели напрямую, а не преобразовывать их в / из чего-то вроде NSDictionary.
  • Встроенная сортировка объектов при извлечении их из хранилища данных.
  • Богатая система предикатов для поиска в вашем наборе данных по интересующим объектам.
  • Отношения между сущностями обрабатываются напрямую как свойства связанных объектов. С plist вам нужно будет сделать что-то вроде сохранения идентификатора объекта для отношения, а затем найти связанный объект.
  • Необязательная автоматическая проверка значений свойств.

Модели данных не используют массивы, но отношения «ко-многим» моделируются как наборы.

4 голосов
/ 16 июня 2011

Это вопрос того, что вы экономите. Для простых строк, массивов, словарей хорошо использовать plist. Для чего-то более сложного (данные, изображения, не-объектная информация) или чего-то, связанного со многими (например, отношения между песней к альбому или фотографией с фотографом), тогда что-то вроде более надежного решения может работать лучше, чем SQLite.

CoreData - это оболочка на основе цели c для SQLite. Если вы думаете, что захотите чего-то более сложного, CoreData может быть подходящим вариантом.

Если вам нужен быстрый учебник, я бы проверил: http://www.raywenderlich.com/934/core-data-tutorial-getting-started

Это помогло мне освоить основы CoreData.

Удачи!

...