0
URLRequestが完了するまで実行を保留しようとしています。URLRequestが終了するまでメインスレッドを待機させます。
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
self.sendRequest(request: request as URLRequest) {
}
self.firebaseAuth(credential)
self.performSegue(withIdentifier: SEGUE_TO_FIRST_CONTENT_PAGE, sender: nil)
}
func sendRequest (request: URLRequest, completion: @escaping() ->()) {
let session = URLSession.shared
session.dataTask(with: request as URLRequest) { (data, response, error) in
UIApplication.shared.isNetworkActivityIndicatorVisible = false
do {
let userData = try JSONSerialization.jsonObject(with: data!, options:[]) as? [String:AnyObject]
let genderData = userData!["gender"] as! String
self.userObject.gender = genderData
completion()
} catch {
completion()
print("ERROR")
}
print("sendRequest Done!")
}.resume()
}
今のところ、sendRequest()を終了する前にもsegueを実行します。 sendRequest()が完了するまでにメインスレッドの待機を行う方法を理解できません。
なぜ下のメインthread.Sampleのそれをラップブロックのセグエ側を実行するだけではないのですか? – Abizern
メインスレッド外のUIを編集することはできません。 –
メイン・キュー内の呼び出しを非同期にすることは、共通のパターンです。 – Abizern