如果不需要,是否可以不调用完成处理程序进行segue



假设我有一个函数,它有一个完成处理程序,然后调用另一个函数,完成处理程序如下:

func register(withCompletion complete: @escaping (() -> Void)) {
    self.sendRegisterRequest(withCompletion: { (error: Error?) -> () in
        if error != nil {
            self.performSegue(withIdentifier: "ErrorVCSegue", sender: nil)
        }
        else {
            complete()
        }
    })
}

如果发生错误,它将调用complete()来segue。

我可以这样segue离开,不调用complete()吗?我不需要从这个函数返回,因为我现在想转到另一个视图控制器。

谢谢。

这是个坏主意。无论如何都应该调用一个完成处理程序。呼叫方正在等待响应。它想知道什么时候完成。这就是拥有一个完成处理程序的全部意义。

在您的情况下(像许多其他情况一样),如果完成处理程序接受布尔参数(和/或错误参数)会好得多。这样,完成处理程序提供了关于方法成功或失败的一些基本信息。

试一下

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

谢谢:)

最新更新