如何在加载视图控制器之前使用来自服务器/数据库的数据来显示视图控制器

Posted

技术标签:

【中文标题】如何在加载视图控制器之前使用来自服务器/数据库的数据来显示视图控制器【英文标题】:How do I use data from server/database for display of view controller before view controller is loaded 【发布时间】:2020-07-29 17:54:34 【问题描述】:

当我们在 swift 上运行模拟时,我想在加载视图之前加载/使用 json 数据来显示我们的视图控制器,因为我们的视图表依赖于我们从服务器接收的 json 数据。但是,当我们使用下面的代码时,它不会在屏幕上显示正确的数据。我们成功地能够从我们的 HTTP 请求中检索到服务器的数据,但无法将其用于我们的视图显示。

enter image description here

【问题讨论】:

将代码添加为文本而不是图像 复制/粘贴代码,不只是截图。? print(friendliest.result) => print("Inside closure: \(friendliest.result)") & print(nameArray) => print("NameArray: \(nameArray)")。你认为哪个会最先打印?是的,它是异步的。 Mook 为“Swift + Async + Closure”,但简而言之,你会在一段时间后获取数据,完成后,在主线程中重新加载 tableView。 【参考方案1】:

你需要在补全里面重新加载表格

self.namesArray = friendList.result
DispatchQueue.main.async 
  self.tblView.reloadData()

【讨论】:

我们是否在 viewDidLoad() 中这样做? 在你当前的代码中self.namesArray = friendList.result这一行下面 @NatalieWang 如果您确实复制/粘贴了您的代码而不是屏幕截图,我相信 Sh_Khan 会复制/粘贴完整有趣的部分以让您了解在哪里编写它,但因为它是截图,不重复也是可以理解的。复制/粘贴屏幕截图(和引用/搜索)的原因 除了@Larme 所说的,当其他操作搜索图像不适合的类似问题时,搜索引擎会使用文本

以上是关于如何在加载视图控制器之前使用来自服务器/数据库的数据来显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在后退按钮上重新加载上一个视图控制器?

$q defer 和 promises 以及如何使用它们在视图呈现之前为控制器加载数据

如何在 SWIFT 中推送视图之前加载视图?

如何在将数据推送到导航堆栈之前将数据传递给视图控制器并加载它?

如何设置选择器视图以显示来自多个矩阵选项的数据?

如何使用新数据重新加载或刷新选项卡栏控制器的选项卡栏中的数据?