gpt4 book ai didi

swift - 如何在移动到另一个 VC 之前预加载数据

转载 作者:行者123 更新时间:2023-11-30 11:46:07 40 4
gpt4 key购买 nike

我有一个方法,可以从数据库读取一些数据并在闭包中返回它,例如:

 DatabaseManager.readUser(withUserID: "Bob") { (user, error)
MySingleton.shared.user = user
}

我有一个主 VC,它是我的登录页面,还有一个用户可以导航到的“用户”VC。我的用户 VC 需要显示从数据库读取的数据,在本例中是 MySingleton.shared.user

我的问题:

我目前正在尝试在我的家庭 VC 中的后台线程上加载用户的数据,因此当用户导航到用户 VC 时,可以显示数据。但是,如果用户导航到用户 VC 的速度太快,在读取数据之前,我的应用程序就会崩溃,因为 MySingleton.shared.user 为 nil,正如预期的那样。

我的另一个选择是在我的用户 VC 中加载 viewDidLoad() 中的数据,并在闭包中设置它后显示它。但这可能会导致在 VC 加载时间和读取数据时间之间出现某种空白屏幕。

实现无缝用户体验的最佳选择是什么?有没有办法我可以尝试在我的家庭 VC 中预加载它,如果在我导航时仍未设置,请等到它设置好后再显示用户数据?

最佳答案

如果您想在屏幕打开时开始加载数据,可以按以下方式进行:

  1. 点击按钮后检查数据是否已加载。如果是 - 打开下一个屏幕,如果否 - 设置一个标志(例如 openScreenOnDataLoad = true)并显示进度指示器。
  2. 在数据加载完成后的闭包中,检查该标志,如果设置了该标志,则打开下一个屏幕。

如果您在其他地方/类中启动数据加载,您可以使用通知来通知程序的其他部分数据已加载。

关于swift - 如何在移动到另一个 VC 之前预加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815491/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com