解除视图控制器访问不良

时间:2017-06-15 18:36:32

标签: ios swift cocoa-touch core-data

当我尝试关闭视图控制器时出现错误访问错误: (此代码位于名为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的行之前。如何在已执行的代码上发生错误的访问错误?

0 个答案:

没有答案