检查歌曲是否仍然存在

Checking if a song still exists

我正在尝试确定歌曲在播放前是否仍存在于用户的音乐库中。如果用户删除了他们库中的歌曲,以下作用于 MPMediaItem 的代码行仍会产生 URL:

NSURL *songURL=[song valueForProperty:MPMediaItemPropertyAssetURL];

songURL 的形式是 "ipod-library://item/item.m4a?id=5050...etc." 然后下面一行在调用时崩溃:

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

我试过使用以下行来查看歌曲是否仍然存在,但是 returns nil 无论歌曲是否存在。我相信那是因为它与 "ipod-library" 风格 URL.

不兼容
NSData* songData = [NSData dataWithContentsOfURL:songURL];

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

你无法提前判断,但 AVAudioPlayer 的 initWithContentsOfURL 将为 return nil,如果创建播放器失败,错误将填充为 NSError。只需检查 return 代码。

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