В моем приложении я использую NSPersistantContainer с двумя NSManagedObjectContexts (viewContext и фоновый контекст).Все мои операции чтения выполняются в контексте представления, тогда как все мои операции записи выполняются в фоновом контексте (как показано ниже).
Создание нового класса Animal
class func new(_ eid: String) {
//Create Animal Entity
let container = CoreDataService.persistentContainer
container.performBackgroundTask { (context) in
let mo = Animal(context: context)
mo.eid = eid
mo.lastModified = Date()
mo.purchaseDate = Date()
mo.uuid = UUID()
do {
try context.save()
}
catch let error {
print(error)
}
}
}
Проблема, с которой я столкнулся, заключается в том, что мне нужно вернуть вновь созданный NSManagedObject ( Animal ) обратно в класс менеджера, где был вызван Animal.new (eid) , чтобыиспользуется для отображения свойств объекта.
Я экспериментировал с использованием обработчика завершения, но имел проблемы с возвратом значения, как при использовании фонового NSManagedObject в основном потоке.
Использованиевозможная новая функция
Animal.new(eid) { (animal) in
if let animal = animal {
}
Каков наилучший подход для возврата вновь созданного NSManagedObject, созданного в фоновом контексте?