首页 > 解决方案 > 为什么数组数据不是每次都在 Swift 中附加 JSON 响应

问题描述

我的下拉列表是字符串类型的数组,所以我采取了

var statesArray1 = [String]()//this array values is not changing with corresponding selectedCountry?.id in JSON
var statesArray = [States]()
var selectedState: States?

在下面的代码country_id正在改变和

private func getStatesService(){

print("selected countryid \(selectedCountry?.id)")
let parameters: [String : Any] = ["country_id" : selectedCountry?.id]
APIReqeustManager.sharedInstance.serviceCall(param: parameters as [String : Any], method: .post, loaderNeed: false, loadingButton: nil, needViewHideShowAfterLoading: nil, userInteractionCheck : false,vc: self, url: CommonUrl.get_cities, isTokenNeeded: true, isErrorAlertNeeded: false, isSuccessAlertNeeded: false, actionErrorOrSuccess: nil, fromLoginPageCallBack: nil) {[weak self] (response) in
    
 self?.getStates = StatesDataModel(dictionary: response.dict as NSDictionary? ?? NSDictionary())
        
 for statesData in self?.getStates?.result?.states ?? []{
    
 print("selected country states \(statesData.state_name)")

 self?.statesArray1.append(statesData.state_name!)
                
 self?.statesArray.append(States(dictionary: ["adn1code" : statesData.adn1code, "code" : statesData.code, "country_id" : statesData.country_id, "id" : statesData.id, "state_name" : statesData.state_name])!)
   
  }
  }

在这里,如果我打印出selected country states正确的结果,但是当我打印时statesArray1总是只显示第一个选择的国家说明为什么?...每次 countryid 都在变化并出现正确的结果

在这里,我在下拉列表中显示所有州,但始终显示第一个选定的国家/地区。请帮助解决这个问题

@IBAction func stateBtn(_ sender: Any) {
getStatesService()

showDropDown(with: statesArray1, from: sender as! UIButton) { [weak self] (item, index) in
    self?.assignSelectedState(havingTitle: item)
}
}

图片一... 第一个国家和州下拉菜单正确出现

第二张图片..我第二次更改国家但仍然显示第一个选定国家/地区的状态下拉列表

编辑: 总国家和州相关代码

func assignSelectedCountry(havingTitle: String) {
for country in self.countrysArray {
    if havingTitle == country.name {
        self.selectedCountry = country
        self.populateData()
        selectedCountryId = self.selectedCountry?.id
    }
}
}

func populateData() {
self.countryTextField.text = self.selectedCountry?.name
}

@IBAction func countryBtn(_ sender: UIButton) {
showDropDown(with: countrysArray1, from: sender) { [weak self] (item, index) in
    self?.assignSelectedCountry(havingTitle: item)
}
}

func assignSelectedState(havingTitle: String) {
for state in self.statesArray {
    if havingTitle == state.state_name {
        self.selectedState = state
        self.populateDataforState()
    }
}
}

func populateDataforState() {
self.stateTextField.text = self.selectedState?.state_name
 }

标签: arraysjsonswift

解决方案


推荐阅读