У меня довольно сложное приложение для iPhone, которое использует API для извлечения данных с сервера и отображения их пользователю.У меня есть около 5 классов моделей, которые используются во всем приложении - они просто расширяют NSObject.
Я хочу добавить некоторую устойчивость моделям, чтобы разрешить использование определенных частей приложения, даже если устройство находится в автономном режиме.- это действительно просто прославленное кэширование.Я хочу, чтобы только некоторые экземпляры моих моделей сохранялись - например, элементы, отмеченные пользователем, - а другие не должны, например, сотни результатов поиска.
Является ли Core Data правильным решением для этого?Трудности, которые я вижу, следующие:
- Мне бы пришлось изменить способ создания объектов моей модели на протяжении всего проекта.Мне бы пришлось инициализировать их как часть контекста, что не обязательно имеет смысл, если они на самом деле исходят из внешнего API.
- Мне нужно быть осторожным, чтобы не сохранять экземпляры, которые мне не нужны,Похоже, это сводится либо к удалению управляемого объекта сразу после его создания (действительно неловко), либо к использованию отдельного непостоянного контекста для экземпляров, которые я не хочу сохранять (лучше, но все же несколько неловко)
Я надеялся, что смогу продолжать использовать свои модели во всем приложении, не изменяя код, который не должен заботиться о постоянстве, но который кажется неосуществимым, учитывая мои требования.Альтернатива состоит в том, чтобы установить новый набор управляемых объектов параллельно с моими существующими объектами и использовать управляемые объекты только для обеспечения устойчивости, но такое дублирование никогда не кажется правильным решением.
Если я пытаюсь попробоватьвтиснуть основные данные в это, и если да, то как?Или я должен просто посмотреть на другие варианты - sqlite3 (кажется немного сложным для того, что мне нужно), пользовательские настройки по умолчанию (вероятно, не то, для чего они предназначены) или даже сериализацию и запись моих собственных объектов в файлы (кажется, хакерство)).
Спасибо за любой вклад!