Обновление NSManagedObject в приложении с архитектурой VIPER
В приложении, которое выполняет архитектуру VIPER, рекомендуется иметь дело с сущностями с NSObject вместо NSManagedObject (Interactor). Таким образом, NSManagedObject "трансформируется" в PONSO для работы. Вопрос, если я изменю атрибуты в PONSO, как я могу обновить Базовые Данные?
Спасибо.
2 ответа
Просто используйте NSManagedObject
вместо NSObject
, Эта рекомендация не должна восприниматься буквально. В любом случае, NSManagedObject
является прямым потомком NSObject
так что для всех практических целей это так же хорошо.
В качестве примечания, VIPER - это общая философия архитектуры, которая не получила особого внимания из-за чрезмерной детализации своих файлов и функций. Я бы порекомендовал вам уменьшить проблему "Massive View Controller", структурируя ваш код более функционально вокруг этих контроллеров, используя VIPER в качестве хорошего источника вдохновения.
Это очень плохая идея. Если вы используете какие-либо элементы асинхронного кода в своем приложении, и большинство из нас знают, что nsmanagedoject не является потокобезопасным для передачи. Вы должны переосмыслить свой подход. Если вы используете приложение с базовыми данными, то вы можете сохранить управляемый объект в ponso и использовать его для обновления базы данных, одновременно вызывая обновление пользовательского интерфейса после изменения базы данных.