Alamofire
を使用して同期要求を実行しようとしています。私はStackoverflowを見て、この質問が見つかりました:making an asynchronous alamofire request synchronous。Alamofireを使用して同期リクエストを作成するにはどうすればよいですか?
completion
を使用してAlamofire
リクエストを同期させることができますが、動作させることはできません。 completion(bool value)
をしようとしたとき、私はエラーを取得しています。このコードで
func loadData(completion: (Bool)) -> (Int, [String], [String], [String]){
Alamofire.request(url!, method: .get, parameters: nil, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
switch(response.result) {
case .success(_):
if let JSON = response.result.value as! [[String : AnyObject]]!{
//Here I retrieve the data
}
completion(true)
break
case .failure(_):
print("Error")
completion(false)
break
}
}
return (numberRows, nameArray, ageArray, birthdayArray)
}
:これは私の単純化されたコードです。私は取得していますエラーは以下の通りです:
はので(私は同期の値を取得するために完了を使用した例の多くを使用して試してみました「ブール」
を非機能型の値を呼び出すことはできませんテーブルに表示する前にデータを取得する必要がありますが、同時にそのテーブルの行数を取得する必要があります)。
どうすれば同期応答を得ることができますか?
ありがとうございます!
独自の方法を実装することをお勧めします。アップルは、同期ネットワークコールを大いに妨げている。これを見てください:http://stackoverflow.com/questions/31557688/synchronous-url-request-on-swift-2 – FredLoh
https://github.com/Alamofire/Alamofire/issues/1147、あなたが見てくださいこのブログ。これがあなたに役立つことを願っています。 –
非同期メソッドの仕組み、特に補完コールバックを理解できないようです。同期呼び出しを強制する代わりに、その努力を非同期プログラミングの理解に投資してください。 – vikingosegundo