Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何通过查看加载设置默认UITextField值_Ios_Swift_Viewdidload - Fatal编程技术网

Ios 如何通过查看加载设置默认UITextField值

Ios 如何通过查看加载设置默认UITextField值,ios,swift,viewdidload,Ios,Swift,Viewdidload,我试图将保存到结构的JSON数据中的默认值加载到文本字段中。获取JSON数据的函数正在viewdidload中运行。我在viewdidlod下有代码,它返回nil值。为了测试代码,我在iAction下运行,运行良好。如何使代码在viewdidload中正确运行 override func viewDidLoad() { super.viewDidLoad() setUpPicker(textField: lenderName, pickerView: lenderNamePic

我试图将保存到结构的JSON数据中的默认值加载到文本字段中。获取JSON数据的函数正在viewdidload中运行。我在viewdidlod下有代码,它返回nil值。为了测试代码,我在iAction下运行,运行良好。如何使代码在viewdidload中正确运行

override func viewDidLoad() {
    super.viewDidLoad()

    setUpPicker(textField: lenderName, pickerView: lenderNamePicker, PickerViewDelegate: self, PickerViewDataSource: self)
    setUpPicker(textField: mortgageTerm, pickerView: mortgageTermPicker, PickerViewDelegate: self, PickerViewDataSource: self)

    SelectionFunctions.MortgageTermSelection()

    getRates (completion: { [weak self] in
        self?.lenderName.reloadInputViews()
    })

    DispatchQueue.main.async {
        let setupLender = Data.currentRateData.first(where: {$0.financialInstitution == "CIBC Mortgages"})
        let setupRate = setupLender?.fiveYear
        self.mortgageRate.text = setupRate?.percentage
        print(setupRate)
        print(setupLender)
        print(Data.currentRateData.first?.financialInstitution)
    }

    lenderName.text = "CIBC Mortgages"
    mortgageAmount.text = "$300,000.00"
    orginalStartDate.text = ""
    mortgageTerm.text = "5 Year"
    //mortgageRate.text = "3.89%"
    OrginalDiscount.text = "1.25%"
    cashback.text = "$2,000"

    lenderName.addDoneButton()
    mortgageAmount.addDoneButton()

    orginalStartDate.addDoneButton()
    mortgageTerm.addDoneButton()
    mortgageRate.addDoneButton()
    orginalStartDate.addDoneButton()
    cashback.addDoneButton()
    OrginalDiscount.addDoneButton()

    func setupDelegate(textField: UITextField){
        textField.delegate = self
    }

    setupDelegate(textField: mortgageAmount)
    setupDelegate(textField: mortgageRate)
    setupDelegate(textField: OrginalDiscount)
    setupDelegate(textField: cashback)


    DatePicker()
}
只需将DispatchQueue.main.async的使用移到getRates调用的完成块中即可

我假设getRates调用是加载DispatchQueue.main.async块中使用的数据的调用。

考虑getRates异步工作,因此self?.lenderName.reloadInputViews在DatePicker行之后执行
getRates (completion: { [weak self] in
    self?.lenderName.reloadInputViews()

    DispatchQueue.main.async {
        let setupLender = Data.currentRateData.first(where: {$0.financialInstitution == "CIBC Mortgages"})
        let setupRate = setupLender?.fiveYear
        self.mortgageRate.text = setupRate?.percentage
        print(setupRate)
        print(setupLender)
        print(Data.currentRateData.first?.financialInstitution)
    }
})