Каковы нюансы Core Data при работе с потоками?
Главное правило
NSManagedObjectContext и все его NSManagedObject принадлежат одной очереди: main-контекст — главной, private-контекст — своей внутренней. Любое обращение (чтение свойства, fetch, save) должно идти через perform { } или performAndWait { } этого контекста. Нарушение даёт не детерминированные краши и порчу данных, причём часто не там, где ошибка.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep