ブレークポイントを打ちながらデバックを行ない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
JSON の形式が合ってませんね。authors は配列だし imageLinks はオブジェクトだし description はたまに null だったりします。JSON データを注意深く観察することをお勧めします。
https://gyazo.com/919ebdec655ad4918cb46e75cb6d3e22
ご教授ありがとうございます!データを観察したところ[0]や["thumbnail"]が抜けていることに気づけました!Almofireが読み込まれるようになったんですがJSONを解析し終わった後に呼ばれるプロトコルが呼ばれているのにもかかわらずdotrycatch構文のcatchが呼ばれてしまいます。これは何が原因なのでしょうか?
Swift では try したところからしか catch に飛ばないはずなので、stert (普通はstart では) メソッドが何度も呼ばれてるとか?
解決しました!ありがとうございました。
あなたの回答
tips
プレビュー