【发布时间】:2010-12-24 03:15:52
【问题描述】:
我最近遇到了一个在 Internet 上找不到讨论的问题 - 我正在初始化 AVAudioPlayer 以播放音频文件,并收到以下错误:
Error Domain=NSOSStatusErrorDomain Code=-50 "Operation could not be completed. (OSStatus error -50.)
事实证明,我在创建 NSURL 以发送到音频播放器 init 方法时犯了一个错误,导致 NSURL 对象为空。愚蠢的错误,调试时很容易找到,但我想我会在这里列出以防万一其他人做同样的事情。
【问题讨论】:
-
对于其他想知道为什么他们的 NSURL 对象为空的人,如果您正在创建这样的 NSURL 并且您的文件名中有空格,则需要百分比编码:
NSString *path = [[NSBundle mainBundle] pathForResource:@"file with spaces.mp3" ofType:@""]; NSString *path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:path]; -
很棒的评论指出了文件名中的空格问题!非常感谢!
-
此错误的一个可能来源是尝试将 AVAudioSessionCategoryOptions.defaultToSpeaker 选项与 AVAudioSessionCategoryPlayback 一起使用。这不起作用,您需要使用 AVAudioSessionCategoryPlayAndRecord - 或删除 defaultToSpeaker 选项。
标签: iphone cocoa-touch core-audio