저는 이러한 문제를 다루고 있습니다. 서버 데이터에서 가져 와서 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))
}
}
}
데이터 바인딩 :
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return currencies[row]
}
가 있습니까는 작업에 대한 일반적인 접근 방식을 존재 하는가? IMO
서비스로드 중일 때 서비스가 호출되는 이유는 무엇입니까? –