在我的应用中,我有一个这样的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.attribute时,try context.save()
会因
致命错误:无法保存上下文:Error Domain = NSCocoaErrorDomain 代码= 133020
为此,我在applicationDidEnterBackground中放置了另一个try context.save()
,但无济于事。
我想这与线程有关。你们中的任何一个可以给我建议如何解决这个问题吗?