iphone - 同步后立即从 iPod 库加载歌曲

标签 iphone ipod mpmediaitem mpmediaquery

我正在开发一个 iPhone 应用程序,它使用 iPod 库来播放一些歌曲。我用下面的代码加载歌曲。问题是,在设备与 iTunes 同步后立即运行此代码时,会出现问题。显然 iPod 库需要更新,并且需要一些时间。如果我在同步后立即访问 iPod 应用程序,我会看到一条消息“正在更新库..”。如果我在发生这种情况时从应用程序中调用“[查询项目]”,我会得到一个空数组,表明库中没有歌曲。更新结束后一切都很完美。有什么办法可以解决这个问题吗?也许是一种检测更新何时结束的方法。我尝试监听所有 NSNotifications,但更新完成后没有人调用。

    MPMediaQuery *query = [MPMediaQuery songsQuery];

 // convert all items to abstracted media item
 NSArray *items = [query items];

 NSMutableArray *convertedItems = [[NSMutableArray alloc] initWithCapacity:[items count]];
 for (MPMediaItem *item in items) {
  REMediaItem *mediaItem = [[REMediaItem alloc] initWithMediaItem:item];
  [convertedItems addObject:mediaItem];
  [mediaItem release];
 }

希望有人能帮忙。

彼得

最佳答案

我发现实际上有一种方法可以查看更新何时完成。更新结束后设备会发布通知。

[[MPMediaLibrary defaultMediaLibrary] beginGeneratingLibraryChangeNotifications]
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self 
                       selector:@selector(iPodLibraryDidChange)
                           name: MPMediaLibraryDidChangeNotification 
                         object:nil];

唯一的问题是我找不到方法来确定设备是否正在更新 iPod 库,我应该等待它完成,否则设备库中根本没有任何歌曲。 [query items] 在这两种情况下都将返回一个空数组。

关于iphone - 同步后立即从 iPod 库加载歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578559/

相关文章:

适用于 native 应用程序的 iPhone 模拟器/解释器(为 ARM 编译)

iphone - iPad 上的 MPMediaPickerController 方向

ios - 以编程方式将歌曲从 iTunes 云下载到本地设备

iphone - 如何检测 MPMediaItem 是否代表 iOS 上受 DRM 保护的音轨

iphone - iOS:在循环期间等待按钮事件

iphone - 如何修改现有的iOS ABRecord地址

iphone - CALayer 上的 CGPath

ios - 在 iOS 中使用 MPMediaItem 时,我需要使用 mutableCopy 到 NSMutableArray 吗?

javascript - Zepto.js : Tap event doesn't fire

iphone - 如何使用 Objective-C 将 NSData 转换为 zip 文件