私はSwiniftで書かれたSingInServiceを使ってユーザーのログイン情報を取得しています。私はalamofireを使ってHTTP投稿を呼び出しています。私は(dispatch_get_main_queue())dispatch_asyncしようとしたサービスとなってJSON形式のユーザーのログイン情報がSingInServiceにloginedUserに渡すのではなく、不使用を走った後、私は問題を抱えている私はサービスをワープするときにalamofire非同期呼び出し?
要求がある前に、あなたのreturn文が呼び出されている var loginedUser = UserModel()
@IBAction func signedInAction(sender: AnyObject) {
let username:String = txtfUsername.text!
let password:String = txtfPassword.text!
let singInService = SingInService();
dispatch_async(dispatch_get_main_queue()) {
self.loginedUser = singInService.getUserCredential(username, password: password)
}
print(self.loginedUser._username);
txtfUsername.resignFirstResponder()
txtfPassword.resignFirstResponder()
}
class SingInService {
func getUserCredential(username:String,password:String)->UserModel
{
var authenticatedUser = UserModel()
let user = username
let password = password
let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)
Alamofire.request(.GET, "https://httpbin.org/basic-auth/\(user)/\(password)")
.authenticate(usingCredential: credential)
.responseJSON { response in
switch response.result {
case .Success(let JSON):
let responseJson = JSON as! NSDictionary
let username:String = responseJson.objectForKey("user")! as! String
let authenticated:Bool = responseJson.objectForKey("authenticated")! as! Bool
authenticatedUser = UserModel(username: username,password:password,isAuthenticated: authenticated,isManager:false)
case .Failure(let error):
print(error)
}
}
return authenticatedUser;
}
}