Основные данные: Избыток для простого статического приложения для iPhone на основе UITableView? - PullRequest
3 голосов
/ 23 апреля 2010

У меня довольно простое приложение для iPhone, состоящее из множества представлений, содержащих одно сгруппированное представление таблицы. Эти представления объединены в контроллерах навигации, которые сгруппированы в панели вкладок. Простые вещи.

Мои табличные представления делают немного больше, чем текст списка (например, «Собака», «Кошка» и «Ласка»), и эти данные поступают из набора списков. Возможно, стоит также упомянуть, что эти таблицы являются «статичными» в том смысле, что их данные предопределены и будут когда-либо изменяться - и если да, то очень редко - действительно, разработчиком (в данном случае, moi).

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

У меня есть четыре тесно связанных вопроса:

  1. Является ли Core Data избыточным для приложения, состоящего в основном из набора простых табличных представлений?
  2. Рекомендуете ли вы использовать Core Data для управления данными, которые предопределены и крайне маловероятно когда-либо изменятся?
  3. Можно ли заблокировать Базовые Данные так, чтобы их данные не могли измениться, тем самым сняв с меня ответственность как разработчика за редактирование и сохранение контекста управляемого объекта?
  4. Как мне дать Базовым данным мои предопределенные данные, и в формате, который я знаю, что они могут работать?

Спасибо большое, ребята.

Ответы [ 5 ]

3 голосов
/ 23 апреля 2010

Ответ прост. Если вам не нужно сохранять устаревший формат (например, MSWord и т. Д.), Вам следует использовать Core Data. Сырой SQLite - это головная боль, которая не стоит усилий в 99,999% случаев.

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

Также очень легко предварительно заполнить файл Core Data sqlite, используя машину с OS X; Вы знаете, машина, которую вы используете для разработки вашего приложения в первую очередь:)

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

2 голосов
/ 23 апреля 2010

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

  1. Базовые данные очень мощные, но для их работы потребуется умеренное количество канализационных сетей и инфраструктуры.
  2. Базовые данные размещают свое хранилище за пределами пакета приложений (как это должно выполняться на iPhone), поэтому при всех новых установках необходимо будет загружать данные в хранилище при первом запуске. В любом случае эти данные, вероятно, придется хранить как списки ресурсов, так что вы не избавляете себя от необходимости создавать эти списки. Оказывается, что это не так, и вы можете хранить части постоянного хранилища, доступные только для чтения, комплект приложений.

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

2 голосов
/ 23 апреля 2010

Вы можете рассмотреть возможность использования API SQLite напрямую, а не Core Data, так как может быть проще предварительно заполнить базу данных таким способом. Вы можете создать и изменить базу данных SQLite на любой платформе (Mac, Windows, Linux) и просто скопировать ее в комплект своего приложения в качестве ресурса.

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

1 голос
/ 23 апреля 2010

Вы должны прочитать почему NetNewsWire переключился

Два основных вывода из этого поста:

Бьюсь об заклад, Core Data - это правильный путь в 95% случаев. Или больше. С ним легко работать. Это быстро (в большинстве случаев).

А:

(Правило: всегда работать на максимально возможном уровне.)

0 голосов
/ 05 октября 2012

Я рекомендую использовать простой SQLite. Это проще, проще в обслуживании, и вы можете создать базу данных в системах не-Mac, используя множество популярных редакторов графического интерфейса. Для меня использование Core-данных все еще является проблемой. Код для заполнения ваших табличных представлений из статической базы данных SQlite прост, понятен и прозрачен, в то время как Core Data нуждается в большем количестве стандартного кода, который вы сначала даже не понимаете полностью, и в целом имеет много скрытой сложности, которая вам не нужна .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...