2015-01-13 3 views
0

Я пытаюсь определить, существует ли песня в библиотеке пользователя до ее воспроизведения. Если пользователь удаляет песню в своей библиотеке, следующую строку кода, действующего на MPMediaItem еще дает URL:Проверка наличия песни

NSURL *songURL=[song valueForProperty:MPMediaItemPropertyAssetURL]; 

songURL находится в форме «IPOD-библиотеки: //item/item.m4a? ID = 5050 ... и т.д. «. И тогда следующая строка падает при вызове:

[[AVAudioPlayer alloc] initWithContentsOfURL:songURL error:nil]; 

Я попытался использовать следующую строку, чтобы увидеть, если песня все еще существует, но она возвращает ноль, существует ли эта песня или нет. Я считаю, что это связано с тем, что он несовместим с URL-адресом «ipod-library».

NSData* songData = [NSData dataWithContentsOfURL:songURL]; 

Любые предложения были бы замечательными. Спасибо за прочтение!

+1

Попробуйте пропускании 'NSError' файл' initWithContentsOfURL: ошибка: '. Если вы получите сообщение об ошибке, вы узнаете, что файл не существует (или был поврежден). –

+0

@IanMacDonald Спасибо! – Rogare

ответ

1

Вы не можете сказать заранее, но initWithContentsOfURL от AVAudioPlayer вернет nil, и ошибка будет заполнена NSError, если создание проигрывателя не удастся. Просто проверьте код возврата.

https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/index.html#//apple_ref/occ/instm/AVAudioPlayer/initWithContentsOfURL:fileTypeHint:error:

+0

Хорошо, слишком плохо, что он не может быть проверен раньше времени, но это решение работает. Спасибо за ответ! – Rogare

Смежные вопросы