检查歌曲是否仍然存在

时间:2015-01-13 20:18:14

标签: ios iphone ipad avaudioplayer

我正在尝试确定一首歌在播放之前是否仍然存在于用户的库中。如果用户删除其库中的歌曲,则作用于MPMediaItem的以下代码行仍会生成URL:

NSURL *songURL=[song valueForProperty:MPMediaItemPropertyAssetURL];

songURL的格式为“ipod-library://item/item.m4a?id = 5050 ......等”。然后,以下行在被调用时崩溃:

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

我尝试使用以下行来查看歌曲是否仍然存在,但无论歌曲是否存在,它都会返回nil。我认为这是因为它与“ipod-library”式网址不兼容。

NSData* songData = [NSData dataWithContentsOfURL:songURL];

任何建议都会很棒。谢谢你的阅读!

1 个答案:

答案 0 :(得分:1)

您无法提前告知,但AVAudioPlayer的initWithContentsOfURL将返回nil,如果创建播放器失败,错误将填充NSError。只需检查返回代码。

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