Understanding the use of multiple instances of NSManagedObjectContext
It has been mentioned several times in this chapter that you can use multiple managed object contexts. In many cases, you will only need a single managed object context. Using a single managed object context means that all of the code related to the managed object context is executed on the main thread. If you're performing small operations, that's fine. However, imagine importing large amounts of data. An operation such as that could take a while. Executing code that runs for a while on the main thread will cause the user interface to become unresponsive. This is not good, because the user will think your app has crashed. So, how do you work around this? The answer is using multiple managed object contexts.
In the past, using several managed object contexts was not easy to manage; you had to create instances of NSManagedObjectContext
using the correct queues yourself. Luckily, NSPersistentContainer
...