【问题标题】:AVAudioPlayer is turning nilAVAudioPlayer 变为零
【发布时间】:2017-06-30 16:46:23
【问题描述】:

我的代码有问题,但我不知道哪里出了问题。如果我编译代码一切都很好,但如果我运行代码我会得到这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb) 

我见过很多相同的问题,但这些问题的答案对我来说没有用。

import UIKit
import AVFoundation
import AudioToolbox



class ViewController: UIViewController{
   
    var audioPlayer = AVAudioPlayer()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        do {
            audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath:  Bundle.main.path(forResource: "beep", ofType: "wav")!))
            audioPlayer.prepareToPlay()
            
        } catch{
            print(error)
        }
        
        //standaard klaarmaaklijst
        nummerLabel.text = "\(schijnNummer)"
        nummerCheck()
    }

@IBOutlet weak var nummerLabel: UILabel!
}

我希望有人知道我的代码出了什么问题。

【问题讨论】:

  • 您在哪一行得到错误?您正在强制解开看起来像的文件路径 url。
  • 报错就行了:audioPlayer = try AVAudioPlayer(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "beep", ofType: "wav")!))
  • 这可能意味着该 URL 存在问题。这 ”!”是一种力量展开。如果 URL 不正确,强制解包将尝试解包 nil 并终止应用程序。
  • @JasperIJdema 我已经发布了答案,请尝试。还要检查 beep.wav 文件是否存在于主包中

标签: swift xcode swift3 xcode8 avaudioplayer


【解决方案1】:

斯威夫特:

    if let path = Bundle.main.path(forResource: "beep", ofType:"wav") {
        let url = URL(fileURLWithPath: path)

        do {

            let audioPlayer = try AVAudioPlayer(contentsOf: url)
            audioPlayer.prepareToPlay()

        } catch{
            print(error)
        }
    }

注意:请检查url是否正确且不为nil。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2012-02-26
    相关资源
    最近更新 更多