2009-12-07 15 views
9

ho recentemente imbattuto in un problema che non riuscivo a trovare discusso ovunque su Internet - mi è stato in fase di inizializzazione di un AVAudioPlayer per riprodurre un file audio, e ottenere il seguente errore:AVAudioPlayer inizializzazione: il codice di errore -50

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

A quanto risulta, ho commesso un errore durante la creazione del mio da inviare al metodo lettore audio init, con conseguente oggetto nullo NSURL. Stupido errore, abbastanza facile da trovare durante il debug, ma ho pensato di elencarlo qui nel caso in cui qualcun altro faccia la stessa cosa.

+3

E per chiunque altro si chieda perché il loro oggetto NSURL è nullo, se si sta creando NSURL come questo e il nome del file contiene degli spazi, è necessario codificare per percentuale: 'NSString * percorso = [[ NSBundle mainBundle] pathForResource: @ "file with spaces.mp3" ofType: @ ""]; NSString * percorso = [percorso stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSURL * url = [NSURL URLWithString: percorso]; ' – Brynjar

+0

commento impressionante che indica il problema con gli spazi nel nome del file! enorme grazie! – codepushr

+1

Un'origine possibile per questo errore sta tentando di utilizzare l'opzione AVAudioSessionCategoryOptions.defaultToSpeaker insieme a AVAudioSessionCategoryPlayback. Non funziona, devi usare AVAudioSessionCategoryPlayAndRecord - o rilasciare l'opzione defaultToSpeaker. – RenniePet

risposta

6

"Errore OSStatus -50" significa paramErr, un codice di errore Mac vecchio stile che indica un parametro non valido.

1

Assicurati che il tuo NSURL sia valido, o riceverai il codice di errore -50 "Impossibile completare l'operazione".

+0

come faccio ad assicurarmi che il mio NSURL sia valido? Il percorso è corretto e funziona su iPad, ma quando lo eseguo nel simulatore non riesce a trovare il file ... :( – jowie

7

Per quanto riguarda il commento da Brynjar: L'Apple NSURL classe di riferimento che descrivono URLWithString afferma

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

Ho scoperto che usando URLWithString per i percorsi di file system genera l'errore riportato da pix0r e, pertanto, potrebbe essere un'altra spiegazione per l'errore codice = -50

Problemi correlati