前提・実現したいこと
関数get()の中にあるforの中に定義しているvaluesをメンバ変数にしてで出力させたいです。
関数内での定義した定数(変数)の定義の仕方が理解が曖昧です。
そこも合わせて教えてほしいです。
初心者なので分からない細かく教えていただければ幸いです。
また足りない情報があれば追記するのでご指摘ください。
やりたいこととしては以下になります。
①searcbarのtextとgitのURLを合わせる(https://api.github.com/search/repositories?q=Google(Googleでtestしています))
②値を取り出して出力
③tableで表示(順に行なってるためtableは用意してません)
該当のソースコード
for value in array { let value = value as! Dictionary<String, Any>;() //Dictionaryに変換 //Dictionaryに変換後取り出す値の型を変換する let values = value["name"] as! String print(values) }
全体のソースコード
import UIKit class ViewController: UIViewController, UISearchBarDelegate, URLSessionDelegate { override func viewDidLoad() { super.viewDidLoad() searchBar.delegate = self searchBar.showsCancelButton = true // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBOutlet weak var searchBar: UISearchBar! @IBOutlet weak var tableView: UITableView! func searchBarSearchButtonClicked(_ searchBar:UISearchBar) { print("検索") print(searchBar.text!) get() } func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { print("キャンセル") } //アドレスデータを扱うURLクラス func get() { guard let url = URL(string: "https://api.github.com/search/repositories?q=(searchBar.text!)") else { print("no such file") return } //インスタンスの初期化 let session = URLSession.shared //ダウンロード処理が完了した時に戻されるタップル let task = session.dataTask(with: url, completionHandler: {(data, response, error) in DispatchQueue.main.async { let str = String(data: data!, encoding: String.Encoding.utf8) //print(str) do { //jsonをパースする(urlのjsonデータが全て入ってる) let json = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) let jsons = json as! Dictionary<String, Any>;() let array = jsons["items"] as! Array<Any>;() for value in array { let value = value as! Dictionary<String, Any>;() //Dictionaryに変換 //Dictionaryに変換後取り出す値の型を変換する let values = value["name"] as! String //print(values) print(values) } } catch{ print(error) } } }) //taskを動かす task.resume() } }
>>func get()で出力させたいです。
get()のどこで出力させたいのでしょうか?
また、get()の中ならメンバ変数にする必要はないと思いますが。
修正しました。
追記情報足りていますか?
関数get()の中にあるforの中に定義しているvaluesをメンバ変数にしてで出力させたいです。
>>valuesをメンバ変数にしてで出力させたいです。
であれば、メンバ変数にして出力すればいいのではないでしょうか?
なぜしないのでしょうか?
そもそもarrayって何なんでしょうか?
let array = jsons["items"] as! Array<Any>;()が抜けてました。
追記しています。
回答2件
あなたの回答
tips
プレビュー