gpt4 book ai didi

json - Swift:在国家和城市之间的两个pickerView中解析Json

转载 作者:行者123 更新时间:2023-11-30 12:06:15 25 4
gpt4 key购买 nike

我有两个 JSON 网址。想要在两个 UIPickerView 之间进行解析。一个 UIPickerView 代表国家/地区,另一个 UIPickerView 代表城市。我已经能够在 Country 的第一个 UIPickerView 中解析 JSON,这里的数据非常完美。但是当单击城市的 UIPickerView 时,我在 DidSelectRow 函数中收到一条线程消息。请尝试解决这个问题

这是我的代码。

var arrCountryPicker = [CountryPicker]()

var arrCitiPicker = [CityPicker]()

var id = 0
var country_id = 0

我的两个网址

let url = URL(string: "http://......./mobile-app/countries")

let url = URL(string: "http://......../mobile-app/city-by-country-id?country_id="+String(country_id))

PickerView代码

func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {


var country: Int = arrCountryPicker.count

if pickerView == cityPickerView {

country = self.arrCitiPicker.count
}
return country
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

if pickerView == countryPickerView {

let titleRow = arrCountryPicker[row].name

return titleRow

} else if pickerView == cityPickerView{
let titleRow = arrCitiPicker[row].name

return titleRow
}
return ""
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

countryTextField.text = arrCountryPicker[row].name

if pickerView == countryPickerView {
self.countryTextField.text = self.arrCountryPicker[row].name
self.country_id = self.arrCountryPicker[row].id!
self.countryPickerView.isHidden = true
}
else if pickerView == cityPickerView{

Thread about down code is "Thread 1: exc_bad_instruction(code=exc_1386_invop,subcode=0x0)

        self.cityTextField.text = self.arrCitiPicker[row].name

self.cityPickerView.isHidden = true

}
self.view.endEditing(true)
}


func textFieldDidBeginEditing(_ textField: UITextField) {

if (textField == countryTextField){
self.countryPickerView.isHidden = false

}
else if (textField == cityTextField){
self.cityPickerView.isHidden = false

}

}

最佳答案

每当您更改国家/地区时,您都需要更新城市选择器数组。

在选择国家/地区选择器时,调用特定国家/地区 ID 的网络服务并更新城市数组。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

//Remove this line
//txtCountry.text = self.arrCountries[row].name

if pickerView == CountryPicker {
self.txtCountry.text = self.arrCountries[row].name
self.country_id = self.arrCountryPicker[row].id!

//Update city array according selected country
self.updateCitiesFor(id: row)

self.CountryPicker.isHidden = true
} else if pickerView == cityPicker {
self.txtCity.text = self.arrCities[row].name
self.cityPicker.isHidden = true
}
self.view.endEditing(true)
}

更新arrCitiPicker的函数

func updateCitiesFor(id: Int) {

let url = URL(string: "http://......../mobile-app/\(id)")

//Call web service and store cities data of selected country into arrCitiPicker

//Clear city textfield when country change
self.txtCity.text = ""

//Update City Picker with new data
cityPicker.reloadAllComponents()
}

关于json - Swift:在国家和城市之间的两个pickerView中解析Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46639143/

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