2017-10-18 5 views
-2

プロジェクトでは、特定のアクションが発生したときに再生する音楽を追加することにしました。ここで私が持っているものです:Swiftで音楽を再生する:オプションの値をアンラッピングしている間に予期せず見つからない

var player : AVAudioPlayer? 

数行後に...私はこれを試してみてくださいたびに、Xcodeは私にアクションが言って、トリガされ、致命的なエラーがスローされます

func playSound(){ 
    let alertSound = URL(fileURLWithPath: Bundle.main.path(forResource: "Kalimba", ofType: "wav")!) 
    print(alertSound) 

    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
    try! AVAudioSession.sharedInstance().setActive(true) 

    try! player = AVAudioPlayer(contentsOf: alertSound) 
    player!.prepareToPlay() 
    player!.play() 
} 

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

+0

あなたのプレーヤーオプションの値にします。そして、プレーヤーを強制的に使用しますか? –

+0

[Swiftでサウンドを再生する方法]の複製がありますか?(https://stackoverflow.com/questions/32036146/how-to-play-a-sound-in-swift) –

+1

[致命的なエラー:予期せぬことにnilが見つかりました。オプション値 "mean?"をアンラップしています(https://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found-nil-while-unwrapping-an-optional-valu ) –

答えて

2

あなたの音楽ファイルがターゲットに添付されていることを確認する必要がありますか? -

enter image description here

let path = Bundle.main.path(forResource: "Kalimba", ofType: "wav") 
    if path != nil { 
     let url = URL(fileURLWithPath: path!) 
     print(url) 
     let player = AVPlayer(url: url) 
     let playerLayer = AVPlayerLayer(player: player) 
     playerLayer.frame = self.view.bounds 
     self.view.layer.addSublayer(playerLayer) 
     player.play() 
    } else { 
     print("File Not exist") 
    } 
+0

ターゲットを接続するにはどうすればいいですか? – Jackson1442

+0

xcodeナビゲータエリア(xcodeの左側)から音楽ファイルを選択し、インスペクタ(xcodeの右側)から上記の画面のようにターゲットメンバーシップにチェックマークを付けます。 – Jack

+0

完璧、ありがとう!最終的にはうまくいくようになりましたが、私の問題はターゲットの添付ファイルでした。 – Jackson1442

関連する問題