2017-11-29 8 views
-2

JSONからUIPickerviewにデータをフェッチしようとしていますが、そのデータを解析してピッカーからフェッチするフォーマットではありません。swiftを使用してJSONからUIPickerViewにデータをフェッチする方法3

enter image description here

私は、あなたが最も意志APIからデータをフェッチする必要があり、私はテキストフィールド 解析されたコードをタップし

let url = URL(string: "http://api.railwayapi.com/v2/name-to-code/name/\. (pickTxtField.text!)/apikey/fe22em16kb")! //change the url 
    let session = URLSession.shared 
    let request = URLRequest(url: url) 
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in 
     guard error == nil else { return 
     } 
     guard let data = data else { return 
     } 
     do { 
      if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] 
      { 
       DispatchQueue.main.async 
        { 
         var display = String(describing: json["stations"]!) 
         let realname = json["code"] 
         let departmentName = json["name"] 
         self.department.append(departmentName! as! String) 
         self.pickView.reloadAllComponents() // this is reference to your pickerView. Make it global and use it 
       } 
      } 
     }catch let error { 
      print(error.localizedDescription) } 
    }) 
    task.resume() 
+0

他の人が理解して簡単にできるようにするために、あなたがどれだけ遠くにいるかを示すコードスニペットを投稿してください。 –

+3

JSONの読み方と解析方法を学んでください。無数のチュートリアルと[関連する400以上の関連する質問があります](https://stackoverflow.com/search?q=%5BSwift3%5D+parse+JSON) – vadian

+0

リアムは@vadianの示唆したようにJSONを読み込んで解析する方法です。また、 'realname = json [" code "]'や 'departmentName = json [" name "]' 'があなたの望む値を返すのを疑うので、デバッグの方法を学んでください。 – Larme

答えて

0

私pickerviewで解析されたデータから名前とコードを取得する必要がありますおそらく配列になります。 UIPickerViewのデータソースを実装します。その配列のサイズに等しい行数と、各インデックスの配列から各行のタイトルを表示します。

+0

*おそらく*あなたが(途中で間違って)推測していることを意味しますが、質問のJSONによれば、APIが辞書を返すことを知っているはずです**。 JSONを読むことはロケット科学ではなく、2つのコレクションタイプしかありません。 – vadian

+0

jsonのスクリーンショットで応答を確認する必要があります。 Stationsは配列型のオブジェクトであり、Jesmeはその配列をUIPickerViewにロードしたい – bisma

関連する問題