補足
前回のリクエストではJSONSerializationを使用していたため
レスポンスとして返っていなかったのですが、APIサイトで元々取得できるようで
上記のように取得できました。そのためコードを増やしました。
疑問点
APIのリクエストの仕方は合っていると思いますが
JSON error
とコンソールには出ます。
画像のように結果を取得するには、
https://api.themoviedb.org/3/search/movie?api_key=自分のAPI&language=ja&query=fight%20club
となるのですが通信の仕方は間違っていないような気がするのですがなぜですか?
コンソールから見てdecodeができていないのか、それとも
MovieStructを配列に入れていないからですか?
それは試したところMovieResultに影響が出てエラーになってしまいます。
ソースコード
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var movieTableView: UITableView! 6 7 var movies = [Movie]() 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 // Do any additional setup after loading the view. 12 13 fechData() 14 } 15 16 func fechData(){ 17 18 movies.removeAll() 19 20 //&language=ja&query=zero 21 URLSession.shared.dataTask(with: URL(string: "https://api.themoviedb.org/3/search/movie?api_key=自分のAPI&language=ja&query=fight%20club")!, 22 completionHandler: {data, response, error in 23 24 guard let data = data else { 25 print(error?.localizedDescription ?? "Unknown error") 26 return 27 } 28 29 var result: MovieStruct? 30 do { 31 result = try JSONDecoder().decode(MovieStruct.self, from: data) 32 } 33 catch{ 34 print("JSON error") 35 } 36 37 guard let finalResult = result else{ 38 return 39 } 40 41 print("(finalResult.MovieResult.first?.title)") 42 43 let newMovies = finalResult.MovieResult 44 self.movies.append(contentsOf: newMovies) 45 46 DispatchQueue.main.async { 47 self.movieTableView.reloadData() 48 } 49 }).resume() 50 } 51} 52 53extension ViewController:UITableViewDelegate,UITableViewDataSource{ 54 55 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 56 return movies.count 57 } 58 59 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 60 return UITableViewCell() 61 } 62 63 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 64 tableView.deselectRow(at: indexPath, animated: true) 65 } 66} 67 68struct MovieStruct:Codable { 69 let MovieResult: [Movie] 70} 71 72struct Movie: Codable { 73 let title: String 74 let release_date:String 75 let poster_path:String 76}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/26 07:12