お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

文字列の取り出し

iTunes Search APIを使うと

artistIDとかCollectionIDとか簡単に取り出せるんやけど、

iTunesRSSのほうからやと

ダイレクトにそれらを取り出すことはできません。

楽曲名と歌手名はダイレクトに取り出せるんやけどね。

IDプリーズ!

てことで、URLの中から若干荒技で取り出してみました∩(´∀`)∩

 

とりあえずこのURLをたたきます。

http://itunes.apple.com/jp/rss/topsongs/limit=100/json

 

すると文字がずらああぁ..!!と並んでいますね。

これはjsonなので、普通に欲しい情報を取り出すだけならば

valueForKeyで取り出して取り出して..ってやればとれます。

キーで階層を深堀していくわけです。

 

ほんで!

今回わたしは「アーティストidとコレクションidを取り出してね」

との指令を受けました。

ですがこのパラメータ、SearchAPIだと簡単に取り出せるのですが、

RSSのほうには存在しません。

ですがよお〜く見てみると、

どうやらアーティストidは

@"im:artist">@"attributes">@"href"に書かれているURLの

https://itunes.apple.com/jp/artist/kyaripamyupamyu/id448331160?uo=2

id448331160っぽい!(=ぱみゅたん)

さてさてではこいつだけ取り出さなきゃね...

きっとNSStringで何かいいメソッドがあるはずだ!!

と思って検索してみたものの...それっぽいのが...ない...

だから手順をかけて無理くり取り出してみました。

はい、どん!

// アーティストid

NSString* artistHref = [[[data valueForKey:@"im:artist"] valueForKey:@"attributes"] valueForKey:@"href"];//アーティストURL

NSArray* artistSprByID = [artistHref componentsSeparatedByString:@"id"];//"id"でまず区切る

NSString* artistFromID = [artistSprByID objectAtIndex:1];//2個目のオブジェクトにid以下が入ってる

NSArray* artistSprByQmark = [artistFromID componentsSeparatedByString:@"?"];//そっから"?"で区切る

NSString* artistID = [artistSprByQmark objectAtIndex:0];//1個目のオブジェクトに入ってるのがartistID

[musicData setArtistId:artistID];

 

componentsSeparatedByStringってのが

指定した文字のとこでばつーんと区切ってくれるメソッドということで

これでまずid以下を取り出しまして、

さらに同じ処理を書いて?以下を取り出すと、

目的の数字だけが取り出せましたヽ(´ω)ノ♪

(若干手順はふむけど&他にもっといい方法もありそうな気がするけど!)