私は多くの類似の質問を見て、そこからコードを試したが、私のコードは非同期で実行されることを言及したいと思います(別のViewControllerに移動するのは、ログインボタンの。私はあなたが誰かの他に私を参照するというし、私のコードで問題を指摘、本当に感謝する理由。コード実行をメインqeueに移動する方法
私は、サーバー
import UIKit
var IS_LOGGED_IN = Bool()
class LoginDataSender: UIView {
func sendLogInData() {
let myUrl = NSURL(string: "https://somewebsite")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = "username=NAME&password=PASS"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, respoonse, error) in
if error != nil
{
print("error=\(error)")
return
}
dispatch_async(dispatch_get_main_queue(), {
do {
let myJson = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as! NSDictionary
IS_LOGGED_IN = myJson.valueForKey("status") as! Bool
print(IS_LOGGED_IN)
} catch {
print(error)
}
})
}.resume()
}
}
にログインデータを送信する方法を持っていると私が呼ぶことがありますViewControllerからのこのメソッド
import UIKit
class LoginViewController: UIViewController {
let logInDataSender = LoginDataSender()
@IBAction func pressLoginButton(sender: AnyObject) {
logInDataSender.sendLogInData()
if IS_LOGGED_IN {
performSegueWithIdentifier("LogInSegue", sender: self)
}
}
私は結果の結果をグローバル変数IS_LOGGED_INに格納し、その結果に基づいてsegueを実行するかどうかを判断します。 今のところ私はテスト目的でログイン/パスワードをハードコードしています。
LogInボタンを初めてクリックしたときに、IS_LOGGED_IN値を使用できるようにするにはどこにdispatch_asyncを配置する必要がありますか?どうもありがとう!
あなたが同様の質問を読んだなら、きっとあなたは彼らのすべてがあなたの言うことを見てきましたあなたのメソッドに補完ハンドラを追加し、その内部であなたのセグを実行する必要があります。あなたはそれを試しましたか? – dan
@ダン今、Santoshのおかげで、私はその使い方を知っています。 申し訳ありません、iOS用のプログラミングは数週間です:) – Robert