使用 AVAudioPlayer 解包 Optional 值时意外发现 nil

Posted

技术标签:

【中文标题】使用 AVAudioPlayer 解包 Optional 值时意外发现 nil【英文标题】:unexpectedly found nil while unwrapping an Optional value with AVAudioPlayer 【发布时间】:2014-11-23 21:38:30 【问题描述】:

所以这段代码在 ios 模拟器上运行良好,但在我的 iPad Mini 上却不行

    var sound = NSURL(fileURLWithPath:"/Users/Dan/Documents/XCode Code/Colors- Tabbed?/Colors- Tabbed?/Sweg.aiff")
    var audioPlayer = AVAudioPlayer()
    audioPlayer = AVAudioPlayer(contentsOfURL: sound, error: &error)
    var error: NSError?

我在最后一行收到错误“在展开可选值时意外发现 nil”。

【问题讨论】:

【参考方案1】:

AVAudioPlayer 似乎尚未经过审核。它返回一个隐式展开的可选项,可以是nil,并且显然 is 在您的 iPad 上。 (可能是因为您的 iPad 不知道 /Users/Dan/Documents/... 在哪里,因为它在您的计算机上。)

您希望以可选值捕获播放器,以便在使用之前测试nil

var sound = NSURL(fileURLWithPath:"/Users/Dan/Documents/XCode Code/Colors- Tabbed?/Colors- Tabbed?/Sweg.aiff")
var error: NSError?
var audioPlayer: AVAudioPlayer? = AVAudioPlayer(contentsOfURL: sound, error: &error)

if let audioPlayer = audioPlayer 
    // do things with the audioPlayer

【讨论】:

非常感谢,您知道如何将该文件放入我的实际应用程序中以便我的 iPad 可以找到它吗?如果是这样,我会这样称呼它吗?

以上是关于使用 AVAudioPlayer 解包 Optional 值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

初始化 AVAudioPlayer 以在多个函数中使用

使用 AVAudioPlayer 重复音频播放

使用 AVAudioPlayer 中途开始播放 .mp3

使用 AVAudioPlayer 没有声音

使用 AVAudioPlayer 处理钢琴样本——内存管理

我如何知道 AVAudioPlayer 是不是正在使用文件