AlamofireとSVProgressHUDを使用して、APIをクエリし、データを処理しています。 問題は、ディスパッチキュー内で、メインスレッドのUIを更新しても、ディスパッチキューが完了した後に更新結果が来るということです。 私がしたいのは、進行状況を進行状況バーに表示し、進行状況(フロート)をループ内で継続的に更新することです。ただし、ディスパッチキュー内のすべての処理が完了するまで表示されません。私のコードは以下のようになります。 乾杯ディスパッチキュー内のメインスレッドのUIを更新できません3
DispatchQueue.global(qos: .userInitiated).async(execute: {
Alamofire.request(queryURL).responseJSON() { response in
//Do something
for i in 0..<100{
//Do lots of things
DispatchQueue.main.async {
SVProgressHUD.showProgress(Float(i/100), status: "Loading...")
}
}
//Dismiss
})
浮動小数点型へのキャストが整数分裂に対して正しいとは思わない。あなたは2つの整数を分割し、結果を浮動小数点にキャストしている。整数で割った整数は整数です。代わりに 'Float(i)/ Float(100.0)'のようなものを試してみて、うまく動作するかどうか確認してください。 – Brandon
@Brandon Thxご返信ありがとうございます。私はそれが問題ではないと思う。このようなコードをループの中に入れた場合、0.5の進捗状況はすべての処理が完了した後にのみ表示されます。 DispatchQueue.main.async {//SVProgressHUD.showProgress(Flat(featureID)/Float(featuresNum)、status: "Loading ...") SVProgressHUD.showProgress(0.5、ステータス: "Loading ...") } –