Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未调用Alamofire完成处理程序_Ios_Iphone_Swift_Alamofire_Completionhandler - Fatal编程技术网

Ios 未调用Alamofire完成处理程序

Ios 未调用Alamofire完成处理程序,ios,iphone,swift,alamofire,completionhandler,Ios,Iphone,Swift,Alamofire,Completionhandler,我目前正在尝试调用AlamoFire完成处理程序中的prepareForSegue方法,但没有被调用。这是我的密码: func loginMember (username: String, password: String, completionHandler: (String?, ErrorType?) -> ()) { let headers = [ "Cache-Control": "no-cache", "Content-Type": "application

我目前正在尝试调用AlamoFire完成处理程序中的
prepareForSegue
方法,但没有被调用。这是我的密码:

func loginMember (username: String, password: String, completionHandler: (String?, ErrorType?) -> ()) {

  let headers = [
    "Cache-Control": "no-cache",
    "Content-Type": "application/json"
  ]

  let parameters: [String: AnyObject] = [

    "grant_type" : "password",
    "username" : username,
    "password" : password,

  ]

      Alamofire.request(.POST, "\(baseURL)/oauth2/token", parameters: parameters, encoding: .JSON, headers: headers)
        .validate()
        .responseJSON { response in
          switch response.result {
          case .Success:

            guard let value = response.result.value else {
              completionHandler(nil, response.result.error)
              return
            }

            let swiftyJsonVar = JSON(value)

              accessToken = swiftyJsonVar["access_token"].stringValue

            print("This is the login response:\(swiftyJsonVar)")

          case .Failure(let error):
           print("Sorry there was an error: \(error)")

            return
          }

      }

    }
这是调用时的外观:

loginMember(username, password: password, completionHandler: { error in

  dispatch_async(dispatch_get_main_queue()) {
  self.performSegueWithIdentifier("loginToHomeSegue", sender: self)
  }
  }
)

关于为什么没有调用
performsguewithidentifier
有什么想法吗?

您只在输入guard语句的情况下调用您的完成处理程序。您需要为获得访问令牌和错误案例的情况添加调用

Alamofire.request(.POST, "\(baseURL)/oauth2/token", parameters: parameters, encoding: .JSON, headers: headers)
            .validate()
            .responseJSON { response in
                switch response.result {
                case .Success:

                    guard let value = response.result.value else {
                        completionHandler(nil, response.result.error)
                        return
                    }

                    let swiftyJsonVar = JSON(value)

                    accessToken = swiftyJsonVar["access_token"].stringValue

                    print("This is the login response:\(swiftyJsonVar)")

                    // Got the token, call handler
                    completonHandler(accessToken, nil)

                case .Failure(let error):
                    print("Sorry there was an error: \(error)")

                    // Got an error, call handler
                    completionHandler(nil, error)

                    return
                }
        }

你只是在警卫声明失败的情况下才调用它我不知道,我怎么能改变它,使它在成功时调用?