Вопрос хранения данных - PullRequest
2 голосов
/ 04 апреля 2010

Еще один вопрос новичка: как лучше всего хранить данные в приложении Какао, написанном на Obj-C? Например, если я хочу создать своего рода «викторину», которая опрашивает пользователя с помощью предварительно написанных (и написанных пользователем) вопросов? Как мне хранить эти вопросы и ответы? Основные данные?

Спасибо!

Ответы [ 2 ]

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

Core Data, безусловно, является отличным вариантом, как показало @Jack. Есть и другие варианты.

  1. NSCoding - Вы можете привести объекты модели в соответствие с протоколом NSCoding (аналогично java.io.Serializable), что означает, что вы сможете напрямую записывать их в файлы. Я обнаружил, что это отличный вариант, когда у меня нет большого количества данных для сохранения, а данные, которые я сохраняю, имеют относительно простую структуру.

  2. SQLite - Если ваши данные очень реляционные, вы можете рассмотреть возможность использования базы данных (возможно, SQLite) напрямую. Базовые данные - это хранилище объектов, и хотя оно обрабатывает такие вещи, как отношения между объектами, оно не позволяет вам делать действительно полезные вещи, такие как INNER/LEFT/OUTER/CROSS/NATURAL JOIN или другие многостоловые операторы.

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

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

Конечно, это Базовые данные !

Он будет обрабатывать все ... посмотрите здесь: http://developer.apple.com/macosx/coredata.html

Это полный API, который может обрабатывать:

  • ORM между базами данных и объектами времени выполнения
  • постоянство
  • инструменты автоматического построения (например, редактор ER)
  • готово изне нужно почти ничего реализовывать .. у вас уже будет доступ к вашим данным, просто запросив их у контроллеров объектов

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

...