Какой тип хранилища данных мне следует использовать, если у меня есть список данных, который содержит 100 объектов, и каждый объект имеет свои собственные данные? - PullRequest
0 голосов
/ 04 марта 2010

Мой план состоит в том, чтобы отображать список элементов в алфавитном порядке в табличном представлении, содержащем около 100 элементов. У каждого элемента есть изображение, список времен и описание, до которого будет детализировано представление таблицы. То, с чем я борюсь, - это правильный способ хранения и загрузки этих данных. Некоторые говорили мне, что plist будет слишком тяжелым для данных, а базовые данные слишком новыми. Должен ли я просто создать массивы?

Ответы [ 3 ]

1 голос
/ 04 марта 2010

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

В памяти вы, вероятно, можете просто использовать массив (NSArray), и каждый элемент может быть NSDictionary других свойств, относящихся к этой записи. Это похоже на модель вашего дизайна MVC, которую вы затем можете подключить к представлению таблицы.

Что касается сохранения этого на диске, это зависит от того, является ли 100 элементов фиксированным количеством, приблизительным значением или минимумом и т. Д. Списки (см. NSKeyedArchiver) отлично подходят для всех данных, за исключением, возможно, необработанных данных изображения-- Возможно, вы захотите сохранить их «в стороне» в виде отдельных файлов изображений с именами файлов в списке.

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

0 голосов
/ 04 марта 2010

Я обычно по умолчанию использую Core Data, если у меня нет веских причин не делать этого. (Конечно, я выучил базовые данные, чтобы мне было проще.)

Базовые данные имеют следующие преимущества:

  1. Имеется редактор, в котором вы можете легко создавать сложные графы объектов
  2. Может генерировать пользовательские классы для ваших объектов модели данных.
  3. Сгенерированные классы легко модифицируются.
  4. Базовые данные управляют сложностью добавления, удаления и сохранения объектов.
  5. Базовые данные делают сохранение графов объектов практически невидимым.
  6. NSFetchedResultsController специально разработан для предоставления данных для таблиц.

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

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

0 голосов
/ 04 марта 2010

Сериализуйте его в архив, используя протокол NSCoding. См. Руководство . Я бы использовал NSArray бизнес-объектов, реализующих NSCoding, а затем просто заархивировал их.

...