MPMediaItemPropertyAssetURL仅为iPhone 5s返回null

Gre*_*lis 11 iphone objective-c ios xcode5

我一直在使用以下代码从MPMediaItemPickerController返回的MPMediaItem对象中提取资产URL,以便我可以将用户iPhone itunes音乐库中的音乐文件复制到文档文件夹进行处理,但是在iPhone 5s上我总是得到一个null来自MPMediaItemPropertyAssetURL的值,但是当我在iPhone 4或iPhone 5上运行相同的代码时,它应该返回一个正确的URL.

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {

    [self dismissViewControllerAnimated:YES completion:nil];

        if(mediaItemCollection){
           MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
           NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
           NSLog(@"songtitle: %@", songTitle);
           NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
           NSLog(@"%@", assetURL);
        }

}
Run Code Online (Sandbox Code Playgroud)

我曾尝试从有效的架构中删除arm64,并且只为armv7和armv7s构建,但这并没有解决这个问题.

有谁知道为什么会发生这种情况以及我如何解决它或者是否有可以使用的解决方法?我需要能够将音乐从iPhone的音乐库复制到文档文件夹,以便我可以正确处理dj应用程序的音乐.

谢谢

Gre*_*lis 24

我发现问题是我试图获取MPMediaItemPropertyAssetURL属性的歌实际上不在我的设备上.它被列在媒体库中,但实际上仍然在iCloud中.一旦我将歌曲下载到我的设备,问题就解决了.尽管我不喜欢回答我自己的问题,但我还是接受了Jeroen的建议,以便能够帮助他人.

  • @Greg Ellis我直接从iTunes购买了3张专辑,并在我的iPhone上下载.对于某些歌曲,我获得了URL的NIL值.所以这仍然很奇怪. (2认同)