🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

855閲覧

[Swift]searchBarの値をAPIのURLに代入したい

kuro9681

総合スコア10

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/11/08 06:42

編集2019/11/08 06:54

実現したいこと

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"] } }

お手数をおかけいたしますが、何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

MoyaでiTunes APIを叩いている記事がありましたので、参考にされてはいかがでしょうか。
http://tiny-wing.hatenablog.com/entry/2015/12/23/171010

※Swiftの構文が古い等の問題はありそうですので、コピペではなく、感触を掴むという意味合いで。

投稿2019/11/08 07:14

takabosoft

総合スコア8356

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

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

kuro9681

2019/11/08 10:33

前の投稿から引き続きご回答頂きありがとうございます!! 教えて貰いましたサイトを確認させていただきますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問