2009-12-07 10 views
9

poco me encontré con un problema que no pude encontrar discutido cualquier lugar en Internet - que se inicializa un AVAudioPlayer para reproducir un archivo de audio, y conseguir el error siguiente:AVAudioPlayer inicialización: código de error -50

Error Domain=NSOSStatusErrorDomain Code=-50 "Operation could not be completed. (OSStatus error -50.) 

Resultó que había cometido un error al crear mi NSURL para enviarlo al método init del reproductor de audio, lo que provocaba que el objeto NSURL fuera nulo. Error estúpido, bastante fácil de encontrar al depurar, pero pensé en enumerarlo aquí por si alguien más hace lo mismo.

+3

Y para cualquier persona que se pregunte por qué su objeto NSURL es nulo, si está creando su NSURL de esta manera y su nombre de archivo tiene espacios, necesitará codificar por ciento: 'NSString * path = [[ NSBundle mainBundle] pathForResource: @ "archivo con spaces.mp3" ofType: @ ""]; NSString * ruta = [ruta de acceso stringByAddingPercentEspaisajesUsuarioUsingEncoding: NSUTF8StringEncoding]; NSURL * url = [NSURL URLWithString: ruta]; ' – Brynjar

+0

comentario impresionante que señala el problema con espacios en el nombre de archivo! ¡muchas gracias! – codepushr

+1

Una posible fuente de este error es intentar usar la opción AVAudioSessionCategoryOptions.defaultToSpeaker junto con AVAudioSessionCategoryPlayback. Eso no funciona, necesita usar AVAudioSessionCategoryPlayAndRecord, o descartar la opción predeterminadaToSpeaker. – RenniePet

Respuesta

6

"OSStatus error -50" significa paramErr, un código de error Mac antiguo que indica un parámetro incorrecto.

1

Asegúrese de que su NSURL sea válido, o obtendrá el código de error -50 "El funcionamiento no se pudo completar".

+0

¿cómo me aseguro de que mi NSURL sea válido? La ruta es correcta y funciona en el iPad, pero cuando la ejecuto en el simulador no puede encontrar el archivo ... :( – jowie

7

En cuanto al comentario de Brynjar: la clase de referencia de Apple NSURL describir URLWithString afirma

To create NSURL objects for file system paths, use fileURLWithPath:isDirectory: instead.

He encontrado que el uso de URLWithString de rutas del sistema de archivos genera el error reportado por pix0r y por lo tanto podría ser otra explicación para el error code = -50

Cuestiones relacionadas