在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)
}