如果不需要,可以在不调用完成处理程序的情况下进行segue吗?

时间:2016-11-17 06:13:29

标签: ios swift

假设我有一个具有完成处理程序的函数,然后调用另一个函数,使用这样的完成处理程序:

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(),我可以这样离开吗?我不需要从此功能返回,因为我现在想要转到另一个视图控制器。

感谢。

2 个答案:

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

感谢:)