gpt4 book ai didi

ios - 如何在正确启动前从后台加载服务器数据

转载 作者:行者123 更新时间:2023-11-28 06:24:38 25 4
gpt4 key购买 nike

我正在处理这样的问题:我必须从服务器获取数据并将其绑定(bind)到我的 pickerView。但是现在,在第一次启动时我得到空的选择器,作为在 viewDidLoad() 之后执行的检索函数

那么,我能否以某种方式在 viewDidLoad() 之前获取数据?

我曾尝试使用 DispatchQueue.global(qos: .background).async 来检索数据,但看起来它以不正确的方式完成。

var currencies = [String]()
override func viewDidLoad() {
super.viewDidLoad()
setDelegates()
setupLabelInPicker()
updatePickerInfoBeforeStart()
}

func updatePickerInfoBeforeStart() {
DispatchQueue.global(qos: .background).async {
self.retrieveCurrency{ [weak self]
currencies in self?.currencies = currencies
}

DispatchQueue.main.async {
self.pickerTo.reloadAllComponents()
}
}
}

获取数据的方法:

func retrieveCurrency(completion: @escaping ([String]) -> Void) {
requestCurrencyRates { [unowned self] (data, error) in

if error != nil {
fatalError()
} else {
comletion(self.parseCurrensyResponse(data: data))
}
}
}

将数据绑定(bind)到选择器:

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return currencies[row]
}

是否存在针对此类任务的通用方法?

最佳答案

在我看来,您可以使用以下方法做到这一点:

1)在应用启动时获取所需数据

你可以创建一个dummy splash screen,它的用户界面与你的启动storyboard中的完全一样,在那里你可以从服务器获取你的数据。稍后您只需在需要时将此数据传递给 pickerView

2)如果你只需要在一个特定的ViewController中

在这种情况下,您可以在 viewController 本身中从服务器获取 data。您可以在获取数据的同时显示加载器。

关于ios - 如何在正确启动前从后台加载服务器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42368477/

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