Skip to content

Gernot/TestCoreDataParentChildUpdating

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

Sample Project for CoreData updating

Goal: Updating CoreData Graph with Ordered To-Many Relationship via JSON files using Swift Decodable and background contexts that sync with the main context using CoreData constraints and Merge Policies.

General Setup:

  • A single ParentObject has multiple ChildObject in a children property. A table in the App shows them.
  • The name property is the unique identifier and set as constraint in CoreData.
  • The complete list of ChildObjects are loaded from JSON files, there are "Sample1" and "Sample2".

What happens when a sampe is loaded:

  • Parent in the TestViewController is in the viewContext, and the table shows its children which are also in the viewContext. Updating the interface sets it via DiffableDataSource and Snapshots.
  • When updating, a backgroundContext is used, new childObjects are generated
  • Those objects are set via the setter to the existing parentObject that is fetched from the background context.
  • The background context saves, so the objects get merged and the changes are applied to the viewContext.
  • In theory the table should show the state of the viewContext, which got merged from the backgroundContext.

What actually happens:

  • I can't get the state of the background contexts with all relationships over to the viewContext. I don't know why not.
  • If I load on top of full list, it gets empty.
  • If I load on top of an empty list, it gets filled.
  • The order is random, even though it's suposed to be an OrderedSet
  • If there is an object that is in both the old and the new list, even stranger things happen...

My guess is that the error is in the accessor for children in ParentObject. But I don't know how it's supposed to look. Thanks for helping me understand this.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages