延迟在ios swift中的tableView上显示数据

时间:2015-04-16 05:52:41

标签: ios json swift reloaddata

  

您好,

     

我试图将数据解析到listview并且能够得到它   在tableView上显示它,但问题是它需要很多   在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()

    }

1 个答案:

答案 0 :(得分:3)

完成处理程序在后台队列中运行,而不是主线程。但是,UI更新必须在主线程上发生。

尝试在主线程上调用reloadTable()

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

(我只是在这里输入未经测试的,所以我希望它能以这种方式工作)