所以我有一个AVAudioPlayer,有时它工作得很好,但有时它会输出错误“Error Domain = NSOSStatusErrorDomain Code = 1954115647”(null)“”.这是代码:
override func viewDidLoad() { super.viewDidLoad() downloadFileFromURL(url: URL(string: mainPreviewURL)!) } func downloadFileFromURL(url: URL) { var downloadTask = URLSessionDownloadTask() downloadTask = URLSession.shared.downloadTask(with: url,completionHandler: { customURL,response,error in self.play(url: customURL!) }) downloadTask.resume() } func play(url: URL) { do { player = try AVAudioPlayer(contentsOf: url) try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) player!.prepareToPlay() player!.play() } catch { print(error) } }
解决方法
使do语句中的代码如下所示:
let songData = try NSData(contentsOfURL: songURL!,options: NSDataReadingOptions.mappedIfSafe) try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) try AVAudioSession.sharedInstance().setActive(true) player = try AVAudioPlayer(data: songData!,fileTypeHint: AVFileTypeMpegLayer3) player!.prepareToPlay() player!.play()