Gần đây tôi đã chạy vào một vấn đề mà tôi không thể tìm thấy bất cứ nơi nào thảo luận trên internet - Tôi đã khởi tạo một AVAudioPlayer
để đóng một tập tin âm thanh, và nhận được lỗi sau:AVAudioPlayer khởi: mã lỗi -50
Error Domain=NSOSStatusErrorDomain Code=-50 "Operation could not be completed. (OSStatus error -50.)
Khi hóa ra, tôi đã nhầm lẫn khi tạo NSURL
để gửi cho trình phát âm thanh init
, dẫn đến đối tượng NSURL
bị vô hiệu. Sai lầm ngu ngốc, khá dễ tìm khi gỡ lỗi, nhưng tôi nghĩ tôi sẽ liệt kê nó ở đây chỉ trong trường hợp người khác làm điều tương tự.
Và đối với bất kỳ ai khác tự hỏi tại sao đối tượng NSURL của họ là rỗng, nếu bạn đang tạo NSURL như thế này và tên tệp của bạn có dấu cách, bạn cần phải mã hóa phần trăm: 'NSString * path = [[ NSBundle mainBundle] pathForResource: @ "tệp có dấu cách.mp3" ofType: @ ""]; NSString * path = [path stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; NSURL * url = [URL NSURLVới đường dẫn: đường dẫn]; ' – Brynjar
nhận xét tuyệt vời chỉ ra vấn đề với không gian trong tên tệp! lời cảm ơn to lớn! – codepushr
Một nguồn có thể cho lỗi này là cố gắng sử dụng tùy chọn AVAudioSessionCategoryOptions.defaultToSpeaker cùng với AVAudioSessionCategoryPlayback. Điều đó không có tác dụng, bạn cần sử dụng AVAudioSessionCategoryPlayAndRecord - hoặc thả tùy chọn defaultToSpeaker. – RenniePet