The whole managed object context paradigm is clunky. It's meant to be a system of nestable sandboxes for performing discardable operations on the database, but when you start to mix concurrency inside, it becomes intractable.
IMHO, i don't think that 80% of the people using core data understand the concept of managed object context properly. For example, i'm pretty sure everyone wonders what's going on when they try to reuse an object from a context in another and get weird behaviors.
My main point isn't that one should recode a database manually, but that it's extremely rare to need that kind of system in a mobile app in the first place.
Also i think that performing a set of sql query in an sqlite database is much much simpler than creating a correct process for a core data model migration.
Reading the documentation on concurrency and managedobject context would make any people's eyes go blank (https://developer.apple.com/reference/coredata/nsmanagedobje...).
IMHO, i don't think that 80% of the people using core data understand the concept of managed object context properly. For example, i'm pretty sure everyone wonders what's going on when they try to reuse an object from a context in another and get weird behaviors.
My main point isn't that one should recode a database manually, but that it's extremely rare to need that kind of system in a mobile app in the first place.
Also i think that performing a set of sql query in an sqlite database is much much simpler than creating a correct process for a core data model migration.