質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

0回答

1032閲覧

Swiftで、URLSessionを用いたHTTP通信がうまくいかない

night0000910

総合スコア0

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/06/24 13:23

前提・実現したいこと

URLSessionを使ってホットペッパーAPIから店舗情報をJSON形式で取得し、デコードしてインスタンスに入れたい。

発生している問題・エラーメッセージ

print関数にインスタンスを渡しても、何も出力されない。エラーは出ていない。

該当のソースコード

Swift

1import UIKit 2import MapKit 3import Foundation 4 5class MapController: UIViewController { 6 7 var searchText:String = String() //遷移前の画面で入力されたテキスト。これを位置情報として扱う 8 9 var geocoder = CLGeocoder() 10 11 @IBOutlet weak var mapView: MKMapView! 12 13 @IBOutlet weak var tableView: UITableView! 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 18 // Do any additional setup after loading the view. 19 20 geocoder.geocodeAddressString(searchText, completionHandler:{(placemarks, error) in 21 22 if let center = placemarks?.first?.location?.coordinate { 23 24 let latitude = String(center.latitude).addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed) //searchTextに入力された位置の緯度 25 26 let longitude = String(center.longitude).addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed) //searchTextに入力された位置の経度 27 28 if let url = URL(string:"https://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=e506073f251a9ca1&keyword=("カラオケ".addingPercentEncoding(withAllowedCharacters:.urlQueryAllowed))&lat=(latitude)&lng=( longitude)&range=3&format=json") { //searchTextに入力された位置情報から半径1km以内のカラオケ店を検索 29 30 let request = URLRequest(url:url) 31 32 let session = URLSession(configuration:.default, delegate:nil, delegateQueue:OperationQueue.main) 33 34 let download = session.dataTask(with:request, completionHandler:{(data, response, error) in 35 36 session.finishTasksAndInvalidate() 37 38 do { 39 40 let decoder = JSONDecoder() 41 42 let karaoke = try decoder.decode(Karaoke.self, from:data!) 43 44 print(karaoke) //karaokeの内容が出力されない 45 46 } catch { 47 48 print("エラーが発生しました") 49 50 } 51 52 }) 53 54 download.resume() 55 56 } 57 58 } 59 60 61 }) 62 63 64 65 66 67 68 } 69 70 71 /* 72 // MARK: - Navigation 73 74 // In a storyboard-based application, you will often want to do a little preparation before navigation 75 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 76 // Get the new view controller using segue.destination. 77 // Pass the selected object to the new view controller. 78 } 79 */ 80 81} 82 83struct Karaoke:Codable { 84 85 let result:Result? 86 87 struct Result:Codable { 88 89 let shop:[Shop]? 90 91 struct Shop:Codable { 92 93 let access:String? 94 95 let address:String? 96 97 let budget:Budget? 98 99 let budget_memo:String? 100 101 let capacity:Int? 102 103 let card:String? 104 105 let `catch`:String? 106 107 let free_drink:String? 108 109 let free_food:String? 110 111 let genre:Genre? 112 113 let id:String? 114 115 let large_Area:LargeArea? 116 117 let lat:Int? 118 119 let lng:Int? 120 121 let logo_image:String? 122 123 let middle_image:MiddleImage? 124 125 let mobile_access:String? 126 127 let name:String? 128 129 let name_kana:String? 130 131 let non_smoking:String? 132 133 let open:String? 134 135 let parking:String? 136 137 let photo:Photo? 138 139 let private_room:String? 140 141 let small_area:SmallArea? 142 143 let station_name:String? 144 145 let wifi:String? 146 147 struct Budget:Codable { 148 149 let average:String? 150 151 let name:String? 152 153 } 154 155 struct Genre:Codable { 156 157 let `catch`:String? 158 159 } 160 161 struct LargeArea:Codable { 162 163 let name:String? 164 165 } 166 167 struct MiddleImage:Codable { 168 169 let name:String? 170 171 } 172 173 struct Photo:Codable { 174 175 let mobile:Mobile? 176 177 struct Mobile:Codable { 178 179 let l:String? 180 181 let s:String? 182 183 } 184 185 } 186 187 struct SmallArea:Codable { 188 189 let name:String? 190 191 } 192 193 } 194 195 } 196 197}

補足情報(FW/ツールのバージョンなど)

Swift5
Xcode12.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問