在viewWillDisappear
上我需要更新相当多的Core Data
条记录,这样当我从一个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依赖于已完成更新的Core Data。特别是我得到了
"由于未捕获的异常终止应用程序' NSGenericException', 原因:' ***收集< __ NSCFSet:0x12824cde0>在变异的同时 被列举。'"
答案 0 :(得分:0)
你在这里做什么来覆盖viewWillDisappear
方法,所以你过早地调用超级引用,试试这个:
override func viewWillDisappear(animated: Bool) {
//other things
if anySettingChanged {
settingsChanged()
}
super.viewWillDisappear(animated)
}