在 Swift 中播放音乐:在展开 Optional 值时意外发现 nil
Posted
技术标签:
【中文标题】在 Swift 中播放音乐:在展开 Optional 值时意外发现 nil【英文标题】:Playing music in Swift: Unexpectedly found nil while unwrapping an Optional value 【发布时间】:2017-10-18 04:09:13 【问题描述】:在做一个项目时,我决定添加一些音乐以在触发某个动作时播放。这是我得到的:
var player : AVAudioPlayer?
几行之后...
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()
每当我尝试这个时,触发操作时 xcode 都会向我抛出一个致命错误,说:
线程 1:致命错误:在展开可选值时意外发现 nil
【问题讨论】:
你让你的播放器成为一个可选值。然后强制使用播放器? How to play a sound in Swift?的可能重复 What does "fatal error: unexpectedly found nil while unwrapping an Optional value" mean?的可能重复 你不应该在 Swift 中使用!
,除非你可以绝对 100% 保证它在运行时永远不会为 nil。因此,请改用?
,或者告诉我们,当您绝对有信心期待其他内容时,哪一行给出了nil
值。
【参考方案1】:
您应该检查您的音乐文件是否附有您的目标? -
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")
【讨论】:
如何附加目标? 从 xcode 导航器区域(xcode 中的左侧)然后从检查器(xcode 中的右侧)中选择您的音乐文件,然后在目标成员上进行复选标记,如上屏幕所示。 完美,谢谢!终于让它工作了,我的问题是目标附件。以上是关于在 Swift 中播放音乐:在展开 Optional 值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章
在 viewDidLoad Swift 3 中循环播放音频音乐的问题
如何在 Xcode 6.4 Swift 应用程序中添加播放背景音乐? [复制]