質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

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

API

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

Q&A

解決済

1回答

655閲覧

itunes APIで曲名とトラックを取得する

anddy

総合スコア14

Swift

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

API

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

0グッド

0クリップ

投稿2019/08/05 01:44

###itunesのapiを使って入力したアーティストの特定の曲名とトラックを表示したい

任意のアーティストとそのアーティストが出している曲名を入力します。そしてその曲名をlabelで表示し、そのジャケット写真を表示させたいです

発生している問題・エラーメッセージ

出力方法が分かりません

該当のソースコード

swift

1func saveMusicData() { 2 guard let artistName = textField.text else{ 3 return 4 } 5 guard let term = textFIeldSong.text else { 6 // textField.textがnilの場合 7 return 8 } 9 10 let strUrl = "http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsSearch?&term=(artistName)&limit=1&attribute=songTerm&media=music&entity=song&country=jp" 11 12 let encodeUrlString = strUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! 13 14 let url: URL = URL(string: encodeUrlString)! 15 let task: URLSessionTask = URLSession.shared.dataTask(with: url, completionHandler: {data, response, error in 16 do { 17 let items = try JSONSerialization.jsonObject(with: data!) as! NSDictionary 18 19 for(key, data) in items { 20 if (key as! String == "results"){ 21 let resultArray = data as! NSArray 22 for (eachMusic) in resultArray{ 23 let dicMusic:NSDictionary = eachMusic as! NSDictionary 24 25 let datas: [[String: Any]] = ["name": dicMusic["trackName"]!, "imageUrl": dicMusic["artworkurl100"]!] 26 27//ここからが分かりません 28 29 30 31 32 33 34 let url = URL(string: data["imageUrl"] as! String) 35 36 let imageData :Data = (try! Data(contentsOf: url!,options: NSData.ReadingOptions.mappedIfSafe)) 37 38 39 let img = UIImage(data:imageData) 40 41 let realm = try! Realm() 42 43 let music = Musics() 44 45 let id = self.getMaxId() 46 47 music.name = dicMusic["name"] as! String 48 49 music.id = id! 50 51 let dataImage = img!.jpegData(compressionQuality: 1.0) 52 53 music.image = dataImage! 54 55 try! realm.write { 56 realm.add(music) 57 } 58 } 59

試したこと

色々なことを試しましたが、Swift:「Value of tuple type '(key: String, value: Any)' has no member 'subscript'」
や、
Cannot subscript a value of type '[[String : Any]]' with an index of type 'String'
が出てなかなか解決しません

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

JSONの中をDictionary型で探るのが苦手という話でしたら、
JSONを貼り付けるとそれに対応したSwiftのコードを作成してくれるツールやサービス
https://app.quicktype.io/
を使って型を定義したあと、

let welcome = try? JSONDecoder().decode(Welcome.self, from: data)

のようにデコードしてやれば、簡単に各要素にアクセスできるようになるのではないでしょうか?

投稿2019/08/05 08:19

takabosoft

総合スコア8356

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

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

anddy

2019/08/06 12:17

なろほど。ご回答ありがとうございます。そんなやり方があるとは知りませんでした!今回が初めてapiを使っているので色々わからないところだらけですが自分はディクショナリー型でなんとかやりたいと思っていますのでもう少しやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問