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

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

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

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

Swift

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

Q&A

0回答

773閲覧

Swift JSON解析 Alamofireが呼ばれない BooksAPI デバック

Akkuman

総合スコア4

JSON

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

Swift

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

0グッド

0クリップ

投稿2021/12/11 08:51

編集2021/12/11 08:55

ブレークポイントを打ちながらデバックを行ないdotrycatch構文でcatchでブレークポイントは止まったのですが
エラー内容がデバックエリアに表示されませんprint部分にブレークポイントを打ちましたが止まってくれませんでした。
何が原因なのでしょうか?

Swift

1import Foundation 2import Alamofire 3import SwiftyJSON 4import PKHUD 5 6protocol DoneJsonAnalytics{ 7 func doneJsonAnalytics(array:[BooksModel]) 8} 9 10class JsonAnalytics { 11 12 var booksModelArray = [BooksModel]() 13 14 var doneJsonAnalytics:DoneJsonAnalytics? 15 16 func stert(searchWord:String) { 17 18 print(searchWord) 19 let URLString = "https://www.googleapis.com/books/v1/volumes?q=(searchWord)&key=AIzaSyDDSB1wM8Vg4ea_fQKeqa7Iw-z7g9yrGOE&maxResults=40" 20 21 let encodeURLString = URLString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! 22 23 HUD.show(.progress) 24 25 AF.request(encodeURLString, method:.get, parameters: nil, encoding: JSONEncoding.default).responseJSON { 26 response in 27 28 29 switch response.result{ 30 case .success: 31 do { 32 self.booksModelArray = [] 33 let json:JSON = try JSON(data: response.data!) 34 let resultPerPage = json["items"].count 35 36 for i in 0...resultPerPage - 1 { 37 38 if let id = json["items"][i]["id"].string,let title = json["items"][i]["volumeInfo"]["title"].string,let authors = json["items"][i]["volumeInfo"]["authors"].string,let publishedDate = json["items"][i]["volumeInfo"]["publishedDate"].string,let description = json["items"][i]["volumeInfo"]["description"].string,let imageLinks = json["items"][i]["volumeInfo"]["imageLinks"].string{ 39 40 let booksModel = BooksModel(id: id, title: title, authors: authors, description: description, publishedDate: publishedDate, imageLinks: imageLinks) 41 42 self.booksModelArray.append(booksModel) 43 } 44 } 45 self.doneJsonAnalytics?.doneJsonAnalytics(array: self.booksModelArray) 46 HUD.hide() 47 } catch { 48 print("あああああああああ") 49 print("エラーの内容です(String(describing: response.error))") 50 } 51 52 case .failure(_): 53 break 54 } 55 } 56 } 57} 58

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

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

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

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

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

hoshi-takanori

2021/12/11 11:40

JSON の形式が合ってませんね。authors は配列だし imageLinks はオブジェクトだし description はたまに null だったりします。JSON データを注意深く観察することをお勧めします。
Akkuman

2021/12/11 12:00

https://gyazo.com/919ebdec655ad4918cb46e75cb6d3e22 ご教授ありがとうございます!データを観察したところ[0]や["thumbnail"]が抜けていることに気づけました!Almofireが読み込まれるようになったんですがJSONを解析し終わった後に呼ばれるプロトコルが呼ばれているのにもかかわらずdotrycatch構文のcatchが呼ばれてしまいます。これは何が原因なのでしょうか?
hoshi-takanori

2021/12/11 12:27

Swift では try したところからしか catch に飛ばないはずなので、stert (普通はstart では) メソッドが何度も呼ばれてるとか?
Akkuman

2021/12/12 08:32

解決しました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問