В моем приложении есть один контекст CoreData, к которому я подхожу во всех моих контроллерах представления следующим образом:
let managedObjectContext = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
В конкретном контроллере детального просмотра я делаю следующее:
override func viewWillDisappear(_ animated: Bool) {
do {
myCoredataObject.attribute = aTextView.text
try context.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
Теперь я могу перемещаться назад и вперед между главным контроллером вида и этим контроллером подробного вида и вносить изменения в объект.Изменения, похоже, сохраняются: после перезапуска приложения из Xcode myCoredataObject.attribute имеет то же значение, что и до перезапуска.
Однако, когда я переключаюсь на другое приложение, повторно посещаю мое приложение и вносим изменения в myCoredataObject.Атрибут try context.save()
аварийно завершает работу с
Неустранимая ошибка: сбой при сохранении контекста: Ошибка домена = NSCocoaErrorDomain Code = 133020
Ради этого я имеюпоместил еще один try context.save()
в мое приложение DidEnterBackground, но безрезультатно.
Я думаю, это как-то связано с многопоточностью.Кто-нибудь из вас мог бы посоветовать мне, как решить эту проблему?