当我尝试关闭视图控制器时出现错误访问错误: (此代码位于名为NewTaskViewController的视图控制器中)
self.delegate?.newTask(name: taskName!, date:date!,image:self.image, location:self.location) //line 1
self.dismiss(animated: true, completion: nil) //line2
如果我删除第1行,我就不会收到错误。
self.delegate
是视图控制器(ViewController),它提供了我试图用第2行解除的视图控制器(NewTaskViewController)。
newTask:
方法使用Core Data保存参数:(在ViewController内部)
guard let appDelegate =
UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext =
appDelegate.persistentContainer.viewContext
let entity =
NSEntityDescription.entity(forEntityName: "Task",
in: managedContext)!
let task = NSManagedObject(entity: entity,
insertInto: managedContext)
task.setValue(name, forKeyPath: "name")
do {
try managedContext.save()
tasks.append(task)
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
当我删除使用Core Data保存的newTask:方法时,为什么我没有收到错误的访问错误的任何想法。是不是newTask:方法在调用self.dmismiss
之前没有完成执行?但我不明白这是怎么可能的,除非它与Core Data保存的方式有关?有什么想法吗?
编辑: ViewController中的错误发生在该行:
newTaskViewController.delegate = self
在显示newTaskViewController
的行之前。如何在已执行的代码上发生错误的访问错误?