2017-09-07 17 views
0

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 
}) 
+1

浮動小数点型へのキャストが整数分裂に対して正しいとは思わない。あなたは2つの整数を分割し、結果を浮動小数点にキャストしている。整数で割った整数は整数です。代わりに 'Float(i)/ Float(100.0)'のようなものを試してみて、うまく動作するかどうか確認してください。 – Brandon

+0

@Brandon Thxご返信ありがとうございます。私はそれが問題ではないと思う。このようなコードをループの中に入れた場合、0.5の進捗状況はすべての処理が完了した後にのみ表示されます。 DispatchQueue.main.async {//SVProgressHUD.showProgress(Flat(featureID)/Float(featuresNum)、status: "Loading ...") SVProgressHUD.showProgress(0.5、ステータス: "Loading ...") } –

答えて

1

コード以下試してください -

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 as Float, status: "Loading...") 
     } 
    } 
//Dismiss 
}) 

それは....

0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07のように表示され 0.08 0.15 0.16 0.17 0.18 0.19 0.2 0.09 0.1 0.11 0.12 0.13 0.14 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0。98 0.99

0

スレッドには2種類あります。あなたはこの下のリンクでもっと多くを見つけることができます。 UIは唯一のAppleは、スレッドのUIコントロールを変更することはできません同時

Click here on link to know more

に取り組んでいます。だからあなたはUIのスレッドを更新する必要があります。

関連する問題