2015-04-16 3 views
0

Привет,задержки в отображении данных на Tableview в ИОС быстрого

Я пытаюсь разобрать данные о к ListView, и я смог получить его и отображать его на Tableview, но проблема в том, что взяв адский лот времени, чтобы отобразить его на столе. Пожалуйста, найдите мой код ниже.

func jsonParsing() 
    { 
     activityIndicatorView.startAnimating() 

     let session = NSURLSession.sharedSession() 
     let request = NSMutableURLRequest (URL: deviceListURL) 
     request.HTTPMethod = "GET" 

     let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 

      if error != nil { 
       // If there is an error in the web request, print it to the console 
       println(error.localizedDescription) 
      } 

      var err: NSError? 
      if(data != nil) { 
       var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as! NSMutableArray 

       //println("Data: \(jsonResult)") 

       var dataDict: NSDictionary 
       for dataDict : AnyObject in jsonResult { 
        var device_id: NSString = dataDict.objectForKey("deviceId") as! NSString 
        var device_name: NSString = dataDict.objectForKey("deviceName") as! NSString 
        var device_status: NSInteger = dataDict.objectForKey("status") as! NSInteger 

        let dictionary = [self.deviceID: device_id, self.deviceName: device_name, self.Status: device_status] 
        self.myObject.addObject(dictionary) 
       } 

       println("My object = %@", self.myObject) 
       println(self.myObject.count) 

       if self.myObject.count != 0 { 
        self.reloadTable() 

       } 
      } 

      if err != nil { 
       // If there is an error parsing JSON, print it to the console 
       println("JSON Error \(err!.localizedDescription)") 
      } 


     }) 

     task.resume() 

    } 
+0

self.reloadTable() создает проблемы, кажется, ! –

ответ

3

обработчика Завершение выполняется в фоновом режиме очереди, а не основной поток. Однако обновления пользовательского интерфейса должны выполняться в основном потоке.

Попробуйте позвонить reloadTable() на главной теме:

dispatch_sync(dispatch_get_main_queue(), { 
    self.reloadTable() 
}) 

(я только что напечатали это здесь непроверенной, так что я надеюсь, что это работает таким образом)

+0

It works .. !! большое спасибо – Harsha87