【发布时间】:2014-02-07 07:47:14
【问题描述】:
我一直在使用以下代码从 MPMediaItemPickerController 返回的 MPMediaItem 对象中提取资产 url,以便我可以将音乐文件从用户 iPhone iTunes 音乐库复制到文档文件夹进行处理,但在 iPhone 5s 上我总是从 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);
}
}
我已尝试从有效架构中删除 arm64,只为 armv7 和 armv7s 构建,但这并没有解决这个问题。
有谁知道为什么会发生这种情况以及我可以如何解决它或者是否有可以使用的解决方法?我需要能够将音乐从 iPhone 的音乐库复制到文档文件夹,以便我可以为 dj 应用程序正确处理音乐。
谢谢
【问题讨论】:
-
不幸的是,这正是我已经在使用的代码,它可以在除 iPhone 5s 之外的所有设备上运行。下面的代码在 iPhone 5s 上总是导致一个 NULL 的assetURL 变量。 NSURL *assetURL = [item valueForProperty:MPMediaItemPropertyAssetURL];我想它一定与 64 位架构有关,但我无法想象为什么会出现问题......谢谢
-
我也遇到了这个问题,但使用的是 iPhone 5。MPMediaItemPropertyAssetURL 总是为从设备上的查询返回的曲目返回 nil - 所以它必须在那里(我可以播放它来自 iPod)
-
嗨 Jonny,我发现这首歌实际上不在我的设备上。它列在媒体库中,但实际上仍在 iCloud 中。将歌曲下载到设备后,问题就解决了。我希望这对你也有帮助。
-
@GregEllis 您应该添加您的评论作为答案,这完全为我解决了:) 很高兴知道是否有一种方法可以在没有 URL 的情况下从 iCloud 流式传输数据
标签: ios iphone objective-c xcode5