疑問点
下記のソースコードようなtextFieldに値を入力してAPIからレスポンスを取得して
TableViewに表示しているのですが
textFieldに適当な文字を入力したり元のレスポンスがないnil(?)時にalertでエラーを表示したいのですが
この場合どのタイミングで下記を呼び出せば良いですか?
Queryで日本語を対応しているのですがいくら適当な文字を打ち込んだとしてもエラーのprint文が出ないので日本語変換はされているみたいです。
alert(title: "エラー",message: "メッセージ表示")
ソースコード
import UIKit import PKHUD class MovieSearchViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var table: UITableView! @IBOutlet weak var field: UITextField! @IBOutlet weak var indicater: UIActivityIndicatorView! private var items:[MovieItem] = [MovieItem]() var alertController: UIAlertController! override func viewDidLoad() { super.viewDidLoad() self.setupTable() fechData() } //エラーアラート func alert(title:String, message:String) { alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) present(alertController, animated: true) } func textFieldShouldReturn(_ textField: UITextField) -> Bool { fechData() return true } func fechData(){ field.resignFirstResponder() guard let text = field.text, !text.isEmpty else { return } guard let query = text.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { print("パーセントエンコーディング失敗") return } //LoadingAction Start HUD.show(.progress) items.removeAll() URLSession.shared.dataTask(with: URL(string: "https://api.themoviedb.org/3/search/movie?api_key=MYAPI&language=ja&query=(query)&page=1")!, completionHandler: {data, response, error in guard let data = data else { print(error?.localizedDescription ?? "Unknown error") return } var result: MovieStruct? do { result = try JSONDecoder().decode(MovieStruct.self, from: data) } catch{ print("JSON perse error") } guard let finalResult = result else { return } let newMovies = finalResult.results self.items.append(contentsOf: newMovies) DispatchQueue.main.async { self.table.reloadData() //LoadingAction Stop HUD.flash(.progress) } }).resume() } } 以下省略
回答1件
あなたの回答
tips
プレビュー