arrays - 为什么数组数据不是每次都在 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
}
解决方案
推荐阅读
- regex - Scalability of Regular Expressions (MarkLogic)
- multithreading - Play Framework Scala thread affinity
- python - Linprog 可以解决 LP 原始问题但不能解决对偶问题?
- acumatica - 将详细信息网格添加到销售类别 (IN204060) - 父/子问题
- c# - C# HttpClient 通过代理:CONNECT 请求
- postgresql - Batch Conditional INSERT INTO statement in Postgres
- android - Android 深度链接路径模式
- firebase - Google Auth 在尝试运行 Google 脚本时给出“请求的身份验证范围不足”错误
- r - R 黄土曲线之间的插值
- java - 错误说明“不兼容的类型:类无法转换为数组”