【发布时间】:2014-12-25 21:32:09
【问题描述】:
我有两个项目,使用相同的代码,但下面一行:
player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)
仅在其中一个项目中返回此错误:
fatal error: unexpectedly found nil unwrapping an Optional value
另一个项目运行没有错误。
我正在尝试播放声音。
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player:AVAudioPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
var fileLocation = NSString(string: NSBundle.mainBundle().pathForResource("halloweenmp3", ofType: "mp3")!)
var error: NSError? = nil
player = AVAudioPlayer(contentsOfURL: NSURL(string: fileLocation), error: &error)
player.play()
}
在两个项目中,相同的 mp3 文件已添加到项目中,但一个项目会播放声音,而另一个项目会返回错误。
给我错误的项目确实有其他代码,但错误似乎只与上面提到的行有关,所以我看不出项目中的其他代码是如何导致它的。
我尝试复制容易出错的项目并获得相同的结果。我创建了新项目并使用上面使用的相同代码并让它工作。我不确定项目是否以某种方式损坏或项目中的其他代码导致错误,即使它没有在调试器中被引用。
我可以在 xCode 的文件导航器中预览 mp3 文件,这样它就可以正常工作。
【问题讨论】:
-
您应该检查文件 URL 字符串并确保它不是
nil。然后检查NSURL并确保它不是nil。每当您收到“意外发现nil”错误时,您只需检查每个对象并找出哪个是nil。可能是捆绑包中缺少文件。可能是拼写错误或大小写错误。 -
@Rob 很到位。当您从包含多个操作的代码行中遇到错误时,可以将它们分开以跟踪问题。
-
我终于决定开始一个新项目,重写代码并且成功了。我的对象都不是
nil,所以我不知道问题出在哪里。感谢您的帮助。
标签: ios xcode audio swift avfoundation