In einer App, die VIPER-Architektur ausführt, wird empfohlen, Entitäten mit NSObject anstelle von NSManagedObject (Interactor) zu verwenden. Also wird ein NSManagedObject in einem PONSO 'transformiert', um damit zu arbeiten. Die Frage ist, wenn ich Attribute in einem PONSO ändern, wie kann ich Core Data aktualisieren?NSManagedObject in einer App mit VIPER-Architektur aktualisieren
Vielen Dank.
Dies ist keine gute Idee, wie eine der Ideen hinter VIPER ist die Datenpersistenz-Implementierung vom Rest der Anwendung zu trennen. Wenn Sie jetzt anfangen, NSManagedObjects zu umgehen, ist Ihr gesamter Code von CoreData abhängig und Sie erhalten die von @Arkadi erwähnten Probleme auch – ShadowLightz
Nur das @Arkadi ist falsch. Core Data ** ist ** Thread-sicher, und da es der _de facto_ Standard für die Persistenz auf iOS ist, verhindern meine vorgeschlagenen Lösungen nicht die Trennung von Bedenken, während die APIs von Apple für Einfachheit und Leistung genutzt werden. – Mundi
Ich habe kürzlich CoreData ziemlich stark verwendet und ich kann Ihnen versichern, dass CoreData immer noch sporadisch abstürzt, wenn es auf dem falschen Thread verwendet wird; mit sporadisch meine ich Abstürze in der Größenordnung von 1 in einer Million Operationen, aber sie auftreten. Daher müssen Sie jede Operation in synchronisierte Ausführungsblöcke einbinden. Obwohl CoreData großartig ist, könnte eine andere db-Lösung angebracht sein; insbesondere wenn eine Synchronisierung mit Android oder Windows erforderlich ist. – ShadowLightz