假设我有一个具有完成处理程序的函数,然后调用另一个函数,使用这样的完成处理程序:
func register(withCompletion complete: @escaping (() -> Void)) {
self.sendRegisterRequest(withCompletion: { (error: Error?) -> () in
if error != nil {
self.performSegue(withIdentifier: "ErrorVCSegue", sender: nil)
}
else {
complete()
}
})
}
如果出现错误,它会在调用complete()
时消失。
如果没有打电话给complete()
,我可以这样离开吗?我不需要从此功能返回,因为我现在想要转到另一个视图控制器。
感谢。
答案 0 :(得分:2)
这是一个坏主意。无论如何都应该调用完成处理程序。呼叫者正在等待回复。它想知道什么时候完成。这就是拥有完成处理程序的重点。
在你的情况下(像许多其他情况一样),如果完成处理程序接受布尔参数(和/或错误参数)会好得多。这样,完成处理程序提供了有关方法成功或失败的一些基本信息。
答案 1 :(得分:0)
试试这个
override func viewDidLoad() {
super.viewDidLoad()
register { (error) in
if error == nil {
// do what you want in success case
} else {
self.performSegue(withIdentifier: "ErrorVCSegue", sender: nil)
}
}
}
func register(withCompletion complete: @escaping ((_ error: Error?) -> Void)) {
self.sendRegisterRequest(withCompletion: { (error: Error?) -> () in
complete(Error)
})
}
感谢:)