皆さん、ありがとうございました。私はプログラミングに慣れていないので、細かいことがばかげて奇妙に見える場合はごめんなさい。AlamofireとcompletionHandlerの使用
私のアプリのログインページを作っています。私は2つのフィールド - 電子メールとパスワードを持っています。私は、POSTリクエストを実行isLoggedInとFUNC のauthenticateUser、ブール値のプロパティメールとクラスを持つクラスユーザーを、作成しました。
マイロジック:
ユーザーはメールとパスワードを入力し、ログインボタンを押します。これは、isLoggedInの値偽
を持つクラスのオブジェクトを作成し、また、それは、サーバーへのPOSTリクエストを実行
応答は、このようなユーザーを確認すると、isLoggedIn変化に真とメインページへのセグが実行されています。
私はAlamofireを使用しています。私が正しく理解していれば、私はisLoggedInの値を変更することができるのは、completionhandlerを使うことだけです。しかし、それは私のために働いていませんでした - isLoggedInの値は変更されませんが、結果のは真になります。
私は間違いがあると確信していますが、すでに4日間はどこで理解できません。どのようなアドバイスや助けをしても非常に感謝しています。 ViewControllerから
import Foundation
import Alamofire
class User {
let defaults = UserDefaults.standard
var email: String
var password: String
var isLoggedIn: Bool
init(email: String, password: String) {
self.email = email
self.password = password
self.isLoggedIn = false
}
// Perform authentication
func authenticateUser(user: User, completionHandler: @escaping (_ result: Bool) ->()) {
makeAuthenticateUserCall(user: user, completionHandler: completionHandler)
}
// Perform POST request
func makeAuthenticateUserCall(user: User, completionHandler: @escaping (Bool) ->()) {
let parameters = [
"email" : user.email,
"password" : user.password
]
Alamofire.request("http://apistaging.server.com/api/v1/login", method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON {response in
switch response.result {
case .success:
if let json = response.result.value as? [String: Any],
let status = json["status"] as? String,
status == "success" {
completionHandler(true)
}
case .failure:
completionHandler(false)
}
}
}
}
コード:
は私のコードがある
それは実際に返される前に結果を確認@IBAction func loginButtonPressed(_ sender: UIButton) {
if let email = _email.text {
if let password = _password.text {
let user = User(email: email, password: password)
user.authenticateUser(user: user) {resultBool in
user.isLoggedIn = resultBool
}
if user.isLoggedIn {
self.performSegue(withIdentifier: "MainPageViewController", sender: nil)
}
}
}
}
セグエが完了内部で実行する必要がありますハンドラ – dan
ありがとう、なぜ、どのように? –