私はC#の背景から来て、私のSwiftアプリで待っている機能を実装したいと思っています。私は望みの結果を達成しましたが、私はよく分からないセマフォを使用しなければなりませんでした。私は成功値を持つJSONを返すalamoリクエストを持つ関数を持っており、リクエスト関数が完了ハンドラと非同期であることを理解しています。要求が完了すると、ハンドラが起動します。問題はその操作からの成功値を返すことです。Swiftのタスクの結果を「待つ」
func AlamoTest() -> Bool{
var success = false
//Do some things...
//...
//Signal from async code
let semaphore = DispatchSemaphore(value: 0)
Alamofire.request("blah blah blah", method: .post, parameters: parameters, encoding: URLEncoding.default).responseJSON { response in {
success = response["success"]
if(success){
//Do some more things
}
semaphore.signal() //Signal async code is done
}
//Wait until async code done to get result
semaphore.wait(timeout: DispatchTime.distantFuture)
return success
}
私の目標を達成するための「より良い」方法はあります:ここで私がやっているの擬似コードの例ですか?私はSwiftとその非同期構文が初めてです。
Aさんですか?真剣に? – Seapoe