ios - Swift 函数异步

标签 ios swift xcode alamofire

func passcodeViewController(_ passcodeViewController: TOPasscodeViewController, isCorrectCode code: String) -> Bool {

        let userDefault = UserDefaults.standard
        let tokenPinCode = userDefault.string(forKey: "tokenPinCode")
        let mailData = self.emailField.text
        let dataStruct = mailData!+"|"+tokenPinCode!
        print("1")
        self.checkToken(code: dataStruct) { (response) in
            if(response[0] == "OK"){
                print("2")
                self.alertPasswordChange(text: "Podaj nowe hasło", code: dataStruct)
            }else{
                self.standardAlert(title: "Znaleziono błędy", message: "Podany kod jest błedny", ok: "Rozumiem")
                self.werifyButton.isEnabled = true
            }
        }
        print("3")
        return false
    }

函数返回:打印 -> 1 -> 3 -> 2

如何实现效果:打印 -> 1 -> 2 -> 3

最佳答案

使您的函数无效并传递可以处理 bool 值的完成处理程序。

func passcodeViewController(_ controller: Controller, code: String, @escaping handler: (Bool) -> ()) {
  // Your logic
  asyncRequest(...) {
    response in
    let result = ... // find whether code ok
    handler(result)
  }
}

你可以这样调用它:

passcodeViewController(controller, code: "$&36_$") {
  (isOk: Bool) in
  print(3)
  print("code is ok: \(isOk)")
}

关于ios - Swift 函数异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462799/

相关文章:

ios - 如何从 Kingfisher 将图像作为 NSData 写入 Realm?

ios - swift - 如何从服务器获取 JSON 响应

ios - 具有低高度 UICollectionView 的 UIRefreshControl

php - AES 256 加密,PHP/MySQL 与 Swift 的区别

ios - "Expected Declaration"空格错误

ios - 如何从 UITabBarController 中的当前 View 恢复到上一个​​ View ?

ios - 在 View 消失后选择 UITableview

带有 fetchedresultscontroller 的 ios UITableView - 添加自定义行

ios - Gigya Swift 框架缺少 ios-framework-build.sh 脚本

ios - 将相机添加到用户在 map 上的当前位置