如何在Swift UI的pickerview中显示嵌套的JSON值?

问题描述

我希望用户选择该城市的城市和地区。当我选择城市时,我想在pickerview中列出该城市的地区。我还想在文本中显示城市的选择和地区的选择。

struct locationView: View {


@State var selectedFrameworkIndex = 0
@State var tap1 : Bool = false

@ObservedObject var cityfetch = cityFetcher()

var selectedCityName: String? {
    if !cityfetch.cities.isEmpty && selectedFrameworkIndex < cityfetch.cities.count {
        return cityfetch.cities[selectedFrameworkIndex].city_name
    } else {
        return nil
    }
}

var body: some View {
    
          
            VStack{
                
                
                Picker(selection: $selectedFrameworkIndex,label: Text("")) {
                    ForEach(0 ..< cityfetch.cities.count,id: \.self) {
                        
                        Text(self.cityfetch.cities[$0].city_name)
                    }
                }.padding(.trailing,50)
                    .id(UUID())
                
                
                Picker(selection: $selectedFrameworkIndex,label: Text("")){
                    ForEach(0 ..< cityfetch.cities.count,id: \.self) {
                        
                        Text(self.cityfetch.cities[$0].district_name)
                    }
                }.padding(.trailing,50)
                    .id(UUID())
                
            }
            
            
            
            Text("Seçiminiz: \(selectedCityName ?? "")")
                .font(.system(size: 20,weight: .regular,design: .rounded))
            
            
        }

struct city : Decodable,Identifiable{

let id = UUID()
let city_id : Int
let city_name : String
let district_id : Int
let district_name : String
}

我的课程正在关注。

class cityFetcher : ObservableObject{

@Published var cities = [city]()


init() {
    loadCity()
    
}
func loadCity(){
    
    let url = URL(string: "https://raw.githubusercontent.com/midorikocak/turkish-cities-districts/master/data/il-ilce.json")
    URLSession.shared.dataTask(with: url!) { (data,response,error) in
        do{
            let cities = try JSONDecoder().decode([city].self,from: data!)
            DispatchQueue.main.async {
                self.cities = cities
                
            }
                
            
        }   catch{
            print("Error")
        }
    }.resume()
    
    
}

}

我还将JSON信息作为图像发布。

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)