実現したいこと
searchBarにサウンド名を入力して検索すると、
iThunsAPIのURLで検索が行われて検索結果がTabelViewに表示されるような実装。
・ライブラリはMoyaを使っています。
実現したいこと
searchBarに入力された値をどのようにAPIのURLに代入するかわからずご教授いただきたいです..
イメージとしてはsearchBarSearchButtonClicked
メソッドで値を取得して、取得した内容をURLに代入するという風な実装です。
ソースコード
import Moya class ListTableViewController: UITableViewController, UISearchBarDelegate { @IBOutlet weak var searchBar: UISearchBar! private var results: [NSDictionary]? override func viewDidLoad() { super.viewDidLoad() self.tableView.register(UINib(nibName: "SongTableViewCell", bundle: nil), forCellReuseIdentifier: "SongTableViewCell") let provider = MoyaProvider<ITunesAPI>() provider.request( .artistName(request: ["artistName": "ビートルズ"])) { results in switch results { case let .success(moyaResponse): let jsonData = try? JSONDecoder().decode(Address.self, from: moyaResponse.data) dump(jsonData!) case let .failure(error): print("アクセスに失敗しました:(error)") } } } func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { searchBar.resignFirstResponder() }
import Moya class Address: Codable { var resultCount: Int var results: [Result]? } struct Result: Codable { var artistName: String var trackName: String } enum ITunesAPI { case artistName(request: Dictionary<String, Any>) } extension ITunesAPI: TargetType { var baseURL:URL { let searchText = "test" return URL(string: "https://itunes.apple.com/search?term=(searchText)&country=JP&lang=ja_jp&media=music")! //ここの (searchText)にsearchBarの値を代入したい。 } var path: String { switch self { case .artistName: return "/artistName" } } var method: Moya.Method { return .get } var sampleData: Data { return Data() } var task: Task { return .requestPlain } var headers: [String : String]? { return ["content-type": "application/json"] } }
お手数をおかけいたしますが、何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/08 10:33