我将mp3文件保存为Core Data作为NSData二进制数据 . 然后我在 NSFetchedResultsController
的帮助下加载这个文件 . 然后我写了下面的代码,但我得到了错误 . 我该如何解决?
致命错误:在展开Optional值时意外发现nil
var audioPlayer = AVAudioPlayer()
func play() {
if musicData != nil {
audioPlayer = AVAudioPlayer(data: musicData, error: nil)
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
audioPlayer.prepareToPlay()
audioPlayer.play()
}
}
UPDATE 我检查了一下,我看到 AVAudioPlayer
是零,但是我在本课程开始时启动了这个播放器 .
我仍然改变了代码,但我得到了同样的错误第二种方法
var av = AVAudioPlayer()
func play() {
let object = fetchedResultsController.fetchedObjects?.first as! Entity
let songData = object.mp3
var urlData: NSURL!
songData.writeToURL(urlData, atomically: true)
av = AVAudioPlayer(contentsOfURL: urlData, error: nil)
av.prepareToPlay()
av.play()
}
1 回答
我添加了文件类型提示,它适用于我 .