2017-02-02 2 views
1

ビューは何、インジケータ開始をロードすると、すぐにデータをロードするが実行する前に停止されたときにjsonデータが迅速にフェッチされている間にアクティビティインジケータを開始および停止する方法2?ここ

let urlstring = "example.com" 
     let session = NSURLSession.sharedSession() 
     let url = NSURL(string: urlstring) 

     session.dataTaskWithURL(url!) { (data: NSData?, response:NSURLResponse?, error: NSError?) -> Void in 

      if let responseData = data 
      { 

       // var names = [String]() 
       do { 
        let json = try NSJSONSerialization.JSONObjectWithData(responseData, options: .AllowFragments) 

        if let job = json["response"] as? [[String: AnyObject]] { 
         if job.count == 0{ 
          print("error") 
         } 
         for jobs in job { 
          if let id = jobs["id"] as? String, let ccode = jobs["city_code"] as? String, let cname = jobs["city_name"] as? String, let cparent = jobs["city_parent"] as? String{ 
           if check_city_exist(id){ 
            insert_cities(id, city_code: ccode, city_name: cname, city_parent: cparent) 
           } 
           else{ 
            update_cities(id, city_code: ccode, city_name: cname, city_parent: cparent) 
           } 
          } 
         } 

        } 
       } catch { 
        print("error serializing JSON: \(error)") 
       } 

      } 


      }.resume() 

と示す指標とストーピング

prog.startAnimating() // prog is my activity indicator 
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0) 
    dispatch_async(backgroundQueue) {() -> Void in 
     load_data() 
     dispatch_async(dispatch_get_main_queue(), {() -> Void in 
      self.prog.stopAnimating() 
     }) 
    } 

ためのviewDidLoadで自分のコードデータを取得するための私の関数であります問題?

答えて

0

問題はloadDataが別の非同期タスクであるため、コード実行が次の行に移動し、すぐにインジケータが停止します。

あなたのデータロード閉鎖内側にストップコールを移動する必要があります - あなたはjobsループの処理を完了した後に - とUIが

+0

回答が役に立ちましたら、それを受け入れてください。 – Russell

0

を呼び出して、すべてのためのdispatch_get_main_queueが含まれていることを確認してください、私はそれが仕事だ願っていIMPLEMENT PLEASE!

let urlstring = "example.com" 
    let session = NSURLSession.sharedSession() 
    let url = NSURL(string: urlstring) 

    prog.startAnimating() // Here Start Animating 

    session.dataTaskWithURL(url!) { (data: NSData?, response:NSURLResponse?, error: NSError?) -> Void in 

     self.prog.stopAnimating() // here we stop animating because response is either success or failure 

     if let responseData = data 
     { 
      //Here do with response 
     } 


     }.resume() 
    } 
関連する問題