В приложении, которое выполняет архитектуру VIPER, рекомендуется использовать объекты с NSObject вместо NSManagedObject (Interactor). Таким образом, NSManagedObject «преобразован» в PONSO для работы. Вопрос в том, что если я изменяю атрибуты в PONSO, как я могу обновить Core Data?Обновление NSManagedObject в приложении с архитектурой VIPER
спасибо.
Это не очень хорошая идея, поскольку одна из идей, стоящих за VIPER, - это чтобы отделить реализацию сохранения данных от остальной части приложения. Если теперь вы начнете обходить NSManagedObjects, весь ваш код зависит от CoreData, и вы получите проблемы, упомянутые @Arkadi, тоже – ShadowLightz
Только это @Arkadi ошибочно. Core Data ** является потокобезопасным, и поскольку он является стандартом _de facto_ для сохранения на iOS, мои предлагаемые решения не предотвращают разделение проблем при использовании API Apple для простоты и производительности. – Mundi
Я недавно использовал CoreData довольно сильно, и я могу гарантировать, что CoreData все еще спорадически сбой при использовании в неправильном потоке; со спорадически я имею в виду, что аварии происходят в порядке 1 из миллиона операций, но они происходят. Следовательно, вам нужно обернуть каждую операцию в синхронизированные блоки выполнения. Кроме того, несмотря на то, что CoreData отличная, возможно, потребуется другое решение db; особенно когда требуется синхронизация с Android или Windows. – ShadowLightz