Я пытаюсь решить, должно ли какое-либо состояние приложения, особенно выбранный элемент в списке, храниться в Core Data или NSUserDefaults.Когда состояние приложения принадлежит в Core Data вместо NSUserDefaults?
Как правило, я считаю, что предпочтения и состояние приложения должны сохраняться в NSUserDefaults, а данные на уровне модели должны сохраняться в других местах, например, в Core Data. Моя модель до сих пор:
- Должны ли данные храниться вообще? Если пользователь не будет разумно ожидать, что она будет, а затем бросить его (например, положение курсора не сохраняется в TextEdit)
- NSUserDefaults:
- Если приложение было несколько документов, установка будет применяются ко всем документам
- Это возможно, что данные будут сконфигурированы в настройках
- Имея данные за пределами модели имеет смысл для тестирования (поменяв несколько дефолтов с одной моделью магазина)
- модель уровня
- Данные, очевидно, принадлежит как атрибут объекта модель уровня
- данные достаточно велико, что хранение ее в NSUserDefaults вызовет проблемы производительности
- Было бы трудно или время интенсивно для пользователя воссоздавать данные (они, безусловно, считают потерю этой информации «потери данных»)
Я планирую хранить порядок сортировки некоторых объектов в Core Data. Без этой информации (т. Е. Атрибута sortIndex или «order») каждый экземпляр объекта должен быть дополнен данными из пользовательских значений по умолчанию.
Однако сохранение состояния в модели похоже на скользкий наклон. Если я храню порядок сортировки, то также представляется целесообразным хранить выбор, поскольку они являются как состоянием списка. Данные выбора для моего варианта использования могут быть довольно большими. В частности, значки в одном списке зависят от выбора в каждом из своих подписок.
Есть ли у кого жесткая линия, которую они рисуют в отношении NSUserDefaults против модели данных?
Это приложение для iPhone, которое в моем случае относится к сценарию на основе библиотеки. Мне нравится ментальная модель рассмотрения гипотетического многоуровневого приложения, хотя, и будет ли изменение сделать приложение грязным. В моем случае это было бы, так как выбор под-списка изменяет представление более высокого списка (в частности, подвыбор изменяет то, какое изображение отображается рядом с элементом в более высоком представлении). Что касается сортировки, я имел в виду, что порядок сортировки определяется пользователем. То есть, они могут произвольно упорядочить список (например, создать плейлист в iTunes). – orque
Основываясь на «загрязняет ли он документ», я также хотел бы добавить «изменится ли результат на результат в дополнение к стеку отмены». Undo работает как для приложений на основе документов, так и для библиотек, поэтому кажется, что это хорошая эвристика. – orque