我认为我遇到了一个问题,我的关闭发生在后台线程上,而我的UITableView更新速度不够快.我正在打电话给一家休息服务公司,在我结束时我接到了一个tableView.reloadData()的电话,但这需要几秒钟的时间.如何使数据重新加载更快(可能在主线程上)

REST Query Function - using SwiftyJSON library for Decoding

func asyncFlightsQuery() {
    var url : String = "http://127.0.0.1:5000/flights"
    var request : NSMutableURLRequest = NSMutableURLRequest()
    request.URL = NSURL(string: url)
    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, networkData: NSData!, error: NSError!) -> Void in
        var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil


        // Parse with SwiftyJSON
        let json = JSON(data: networkData)

        // Empty out Results array
        self.resultArray = []

        // Populate Results Array
        for (key: String, subJson: JSON) in json["flights"] {
            print ("KEY: \(key) ")
            print (subJson["flightId"])
            print ("\n")

            self.resultArray.append(subJson)
        }

        print ("Calling reloadData on table..??")
        self.tableView.reloadData()


    })
}

一旦在我的调试器中调用self.tableView.reloadData()

推荐答案

UIKit不是线程安全的.UI只能从主线程更新:

dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
}

Update.在Swift 3及更高版本中使用:

DispatchQueue.main.async {
    self.tableView.reloadData()
}

Swift相关问答推荐

运行异步任务串行运行

如何使用swift宏生成一个带有关联值的枚举?

减go 用SWIFT struct 填充的NSCountedSet

Swift:iVar + Equatable上的协议约束

SwiftUI正在初始化不带状态变量的绑定变量

NSApplication是否需要NSApplicationDelegate?

在MacOS上检测键盘是否有Globe键

不能将符合协议的SWIFT类的实例分配给需要该协议的Objective-C属性

如何通过 Enum 属性使用新的 #Predicate 宏获取

OSX 中的 Popover 无法确定透明度

如何从 RC 加载场景作为 ModelEntity 而不是普通实体?

如何从 Swift 中隐藏 Objective-C 类接口的一部分?

为什么即使 `C` 是一个不是 `Sendable` 的类,Task` 也能工作?

如何在 Combine 合并运算符的输出上使用 eraseToAnyPublisher

自定义选取器的出现导致其他视图重新排列

如何获得不同的插入和移除过渡动画?

让我的函数计算数组 Swift 的平均值

Swift 2 中的新 @convention(c):我该如何使用它?

如何为多个类 Swift 进行扩展

Swift 的 JSONDecoder 在 JSON 字符串中有多种日期格式?