Обновление NSManagedObject в приложении с архитектурой VIPER

В приложении, которое выполняет архитектуру VIPER, рекомендуется иметь дело с сущностями с NSObject вместо NSManagedObject (Interactor). Таким образом, NSManagedObject "трансформируется" в PONSO для работы. Вопрос, если я изменю атрибуты в PONSO, как я могу обновить Базовые Данные?

Спасибо.

2 ответа

Решение

Просто используйте NSManagedObject вместо NSObject, Эта рекомендация не должна восприниматься буквально. В любом случае, NSManagedObject является прямым потомком NSObject так что для всех практических целей это так же хорошо.

В качестве примечания, VIPER - это общая философия архитектуры, которая не получила особого внимания из-за чрезмерной детализации своих файлов и функций. Я бы порекомендовал вам уменьшить проблему "Massive View Controller", структурируя ваш код более функционально вокруг этих контроллеров, используя VIPER в качестве хорошего источника вдохновения.

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

Другие вопросы по тегам