Asynchronous Saving

One of the biggest issues with threading and Core Data has to do with thread blocking. No matter how cleverly you write the import and export operations, sooner or later you need to block the main queue to let the main NSManagedObjectContext talk to the NSPersistentStoreCoordinator and save changes out to disk.

Fortunately, this is a solvable problem and requires a small change to the Core Data stack. If you start your Core data stack with a private queue, NSManagedObjectContext, and associate it with the NSPersistentStoreCoordinator, you can have the main NSManagedObjectContext as a child of the private NSManagedObjectContext. Furthermore, when the main NSManagedObjectContext is saved, it won’t produce a disk hit and will ...

Get Core Data in Swift now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.