Asynchronous 从异步函数重新加载UITable调用

Asynchronous 从异步函数重新加载UITable调用,asynchronous,uiviewcontroller,swift,Asynchronous,Uiviewcontroller,Swift,我在http请求中的回调函数中调用这段代码。http请求是用于更新应用程序数据的get。因此,对于一些VCs,我需要重新加载视图实例,回调完成后会更新核心数据中的所有内容 下面是我当前使用的代码块(在回调函数中调用) 如您所见,我已经尝试了reloadData()、setNeedsDisplay()、viewDidLoad和reloadInputViews()。我从一个问题的答案中得到的想法。我确信if语句正在为每个vc类传递。所以我不知道为什么这不是重新加载VC/表。这是因为它是在异步函数中调

我在http请求中的回调函数中调用这段代码。http请求是用于更新应用程序数据的get。因此,对于一些VCs,我需要重新加载视图实例,回调完成后会更新核心数据中的所有内容

下面是我当前使用的代码块(在回调函数中调用)

如您所见,我已经尝试了reloadData()、setNeedsDisplay()、viewDidLoad和reloadInputViews()。我从一个问题的答案中得到的想法。我确信if语句正在为每个vc类传递。所以我不知道为什么这不是重新加载VC/表。这是因为它是在异步函数中调用的吗

这是因为它是在异步函数中调用的吗

这可能就是问题所在。回调很有可能在后台线程中调用。UIKit不是线程安全的,所有涉及它的东西都必须在主线程上运行。确保在主线程上运行
reloadTopMost()
可以解决问题。您可以使用来执行此操作:

// In your callback:
dispatch_async(dispatch_get_main_queue(), {
    self.reloadTopMost()
})
请注意,
dispatch\u async()
会立即返回。如果需要等待重新加载完成,可以使用

// In your callback:
dispatch_async(dispatch_get_main_queue(), {
    self.reloadTopMost()
})