swift - 如何在viewDidappear之前等待函数结束?

标签 swift ios9 completionhandler

override func viewWillDisappear(animated: Bool) {
    var done = false
    updateCurrentUserInDB(self.currentUser, onCompleted: { done = true })
    while !done { }
}

有什么正确的方法可以做到这一点吗?

最佳答案

首先为什么你的更新需要这么长时间?

一个好的方法是在用户进行更改时不断更新数据。如果您有“取消”按钮,则需要实现一些操作来回滚。

无论如何,如果您无法更快地进行保存过程,我建议将用户对象转发到主视图,在那里更新用户(同时显示进度指示器)并在完成 block 内重新加载主视图。

编辑:更好的方法是将数据传递回主视图(见上文),使用该数据更新主视图并在后台与后端同步。这样,用户不必等到同步完成+您不必向后端发出单独的请求,请求您刚刚发送给它的相同数据。

关于swift - 如何在viewDidappear之前等待函数结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936829/

相关文章:

ios - 数组回调

swift - 对实体进行更改时核心数据仍然存在的问题

ios - 以编程方式创建 iOS UIStackView

ios - 应用程序在 [__NSCFDictionary setObject :forKey:] in iOS 9 only 处崩溃

swift - 如何检测 firebase 观察 childAdded 在达到 queryLimit 时停止调用?

ios - 保持模态 UIViewController 状态的最佳方法是什么?

swift - 使用什么数据文件可以轻松导入到带有 Swift 的 iOS 应用程序中?

ios9 - 启用位码 Xcode 7.1

swift - 为调用异步方法的异步调度队列实现完成处理程序

swift - 嵌套完成处理程序不返回要发送到 TableViewController 的项目