viewWillDisappear上,我需要更新很多Core Data记录,这样做会在我从一个View Controller移动到另一个viewController(通过Tab View Controller)时造成延迟
在我的viewWillDisappear方法中,我调用settingsChanged(),如下所示:

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    //other things
    if anySettingChanged {
      settingsChanged()
    }
}

func settingsChanged() {
  // attempt to display activity indicator view
  context.performBlockAndWait { // on private queue
    // update a lot of Core Data records
    // attempt to hide activity indicator view
  }
}

但是,我无法更新消失的视图,尽管该视图在延迟期间可见。我只是想展示一些事情正在发生,而不是2-3秒的滞后。但我似乎无法显示活动指示器视图!(我使用主线程更新视图!)
使用:
context.performBlock

解决了延迟问题,但会导致错误,因为我的下一个viewControllers依赖于已完成更新的核心数据。特别是我
“由于意外异常'NSGenericException'而终止应用程序,
原因:'***集合在
正在被枚举。“

最佳答案

您在这里要做的是重写viewWillDisappear方法,因此您过早地调用超级引用,请尝试以下操作:

override func viewWillDisappear(animated: Bool) {
    //other things
    if anySettingChanged {
      settingsChanged()
    }
    super.viewWillDisappear(animated)
}

10-04 11:24