[iOS] [Objective-C] [swift] AVAudioPlayerで音楽を再生する

###やりたいこと
----

音楽を再生したい時にご利用ください

###環境
----
XCode8.1
Swift 2

###手順
----
下準備
1.Supporting Filesに音楽ファイルをドラッグ&ドロップ
２.AVFounditionフレームワークを追加

3.使用するViewControllerクラスなどに import AVFounditionを記入する

Objective-C

~~~Objective-C
 #import <AVFoundation/AVFoundation.h>
~~~

4.使用するViewControllerクラスにAVAudioPlayerDelegateを継承

Objective-C

~~~Objective-C
@interface SampleAVAudioPlayerViewController () <AVAudioPlayerDelegate>
~~~

Swift

~~~Swift
//ホゲホゲ
~~~

5.使用するViewControllerクラスの中でAVAudioPlayerを宣言

Objective-C

~~~Objective-C
 NSURL *playFileURL = [NSURL fileURLWithPath:playFileURL];
 NSError *error = nil;
 AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playFileURL
                                                                     error:&error];
~~~

Swift

~~~Swift
 var audioPlayer = AVAudioPlayer()
~~~

6.再生するクラス（SampleSoundとします）にもimport AVFounditionを書く。

7.TitleSceneクラスの中でViewControllerをインスタンス化する。

####読み込む
指定するデータを読み込みしたい場所（key）を指定し、読み込む。

Objective-C

~~~Objective-C
 SampleSoundViewController *sampleSoundVC = [[SampleSoundViewController alloc] init];
~~~

Swift

~~~Swift
 let sampleSoundVC = SampleSoundViewController()
~~~

8.再生したい場所に以下のコードを書く。

Objective-C

~~~Objective-C
 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"playSound" ofType:@"mp3"];
 //fileがない時は何も行わない
　if (!filePath) {
　　 //NSLog(@"No File");
  return;
 }
 NSURL *playFileURL = [NSURL fileURLWithPath:filePath];
 NSError *error = nil;
 //バッファを保持
 [audioPlayerVC.audioPlayer prepareToPlay];
 [audioPlayerVC.audioPlayer play];
 audioPlayerVC.audioPlayer.numberOfLoops = -1;
~~~

Swift

~~~Swift
 let playFileURL = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForResource("playSound", ofType: "mp3")!)

do {
 gameVC.audioPlayer = try AVAudioPlayer(contentsOfURL: playFileURL, error: nil)
} catch {
 print("[Error]")
}

 gameVC.audioPlayer.prepareToPlay()
 gameVC.audioPlayer.play()
 gameVC.audioPlayer.numberOfLoops = -1
~~~

※ 8のコードtry catchの部分は最初以下のように書いてたんですがどうしてもエラーが出てしまってつまづいていました。何がいけなかったのか、わかる方がいたら是非教えてください。。

9.止めたい場所に以下のコードを書く。

Objective-C

~~~Objective-C
 [audioPlayerVC.audioPlayer stop];
~~~

Swift

~~~Swift
 gameVC.audioPlayer.stop()
~~~

## 関連記事

【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中！!)

### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
#### プログラミングラボ
https://twitter.com/sunstripe2011

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

## トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

キャリア教育事業
広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/

#スポンサー募集