我有一個簡單的問題。我正在連接到我的RESTful服務器並嘗試連接。我確實得到了一個響應,一切都很完美,但是當我嘗試調用一個函數來設置一個變量時,它只是不會調用它。Alamofire異步調用
代碼:
//
// LoginClass.swift
// LoginApp
//
// Created by Tarek Adel on 12/3/16.
// Copyright © 2016 Tarek Adel. All rights reserved.
//
import Foundation
import Alamofire;
import UIKit;
class LoginClass {
var result: Bool = false;
var username: String
var password: String
init(username: String, password:String) {
self.username = username;
self.password = password;
}
func login() -> Void {
let data = [
"grant_type" : "password",
"username" : self.username,
"password" : self.password,
"client_secret":"xxxxxx",
"client_id":"xxxxxx",
"scope": ""
]
Alamofire.request("http://localhost:8000/oauth/token", method: .post, parameters: data)
.responseJSON { response in
//to get status code
if let status = response.response?.statusCode {
switch(status){
case 200:
self.loginSuccess();
default:
print("error with response status: \(status)")
}
}
//to get JSON return value
if let result = response.result.value {
let JSON = result as! NSDictionary
print(JSON)
}
}
}
func loginSuccess() {
self.result = true;
}
}
這是我檢查self.result
:
@IBAction func loginButton(_ sender: UIButton) {
let username = usernameTextField.text!;
let password = passwordTextField.text!;
let loginClass = LoginClass(username: username, password:password)
loginClass.login()
if(loginClass.result == true) {
resultLabel.text = "Correct!"
} else {
resultLabel.text = "Wrong Credentials"
}
}
你爲什麼認爲它沒有執行這個函數,你是否把斷點放在那個函數裏面,並試圖調試它? –
同意Nirav。我假設你在switch語句中調用'self.loginSuccess'有困難。你確定在上面的可選綁定中設置了「status」嗎? –
是的,我已檢查它調用self.loginSuccess,但self.result永遠不會改變 –