
[code]

    import UIKit
    import AVFoundation
    
    class ViewController: UIViewController {
    
        var player: AVAudioPlayer = AVAudioPlayer()
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            let audioPath
                = NSBundle.mainBundle().pathForResource("bomb", ofType: "m4a")!
    
            do {
                try player
                    = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: audioPath))
                player.play()
            } catch {
                // Process error here
            }
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    }
    
[/code]

このように入力し、アプリを実行すると次のようなエラーが出ます。

[code]

    fatal error: unexpectedly found nil while unwrapping an Optional value
    (lldb) 
    
[/code]

何が原因になっているのでしょうか？

実際、bomb.m4aというファイルはproject内に挿入しておりますし、実際に音楽として聞くこともできます。  
しかしアプリの実行ができておりません。  
よろしくお願いします。

[![画像の説明をここに入力](https://i.stack.imgur.com/UE5i5.png)](https://i.stack.imgur.com/UE5i5.png)


CC BY-SA 3.0
2015-11-25T13:38:03.757
19297
2017-05-22T12:33:15.360
2015-11-26T13:03:32.323
13249
13249
question
swift
swiftで音楽を流す時に出るエラーについて。


リソースの取得に失敗していると判断するのが、妥当です。

[code]

    let audioPath
                = NSBundle.mainBundle().pathForResource("bomb", ofType: "m4a")
    print (audioPath != nil ? "Exists" : "Empty")
    
[/code]

このように、`print()`関数を挿入して、`audioPath`に正しく音声ファイルのファイルパスが代入されているか、確認してください。

* * *

上の検証の結果、「Empty」になったということなので、パスが通っていないことがわかりました。  
もしリソースに`bomb.m4a`がバンドルされていて、それが再生可能でない形式のファイルだったとすると、

> A bundled sound coudn't load.

というメッセージがコンソールに出ますので、その線は考えられません。  
なので、ファイル名が一致しない、ビルド時正しくリソースファイルがバンドルされていないという線を疑うべきでしょう。

  1. Xcodeの「Product」＞「Clean」をしてからビルドする。
  2. シミュレータ、実機から、一度アプリを削除してから、ビルドする。

こういう対処も検討なさってはいかがですか？


CC BY-SA 3.0
2015-11-25T20:18:37.513
19303
2015-11-27T03:34:50.637
2015-11-27T03:34:50.637
7362
7362
19297
answer