4

通过 iTunes,您可以创建任意嵌套深度的播放列表文件夹。当您将这些播放列表文件夹复制到您的 iOS 设备时,iTunes 能够检测到它们是文件夹,并允许您深入到最终获取歌曲的位置。知道他们是怎么做到的吗?这几天我一直在想办法解决这个问题。

当我查询已知文件夹的特定 persistentID 时,我能看到的与包含歌曲的播放列表不同的唯一内容是:

  • playlist.mediaTypes = 4359(这是 Music|Podcast|Audiobook|Movie|VideoiTunes)而普通的播放列表不会混合音频类型和视频类型
  • 属性 MPMediaPlaylistPropertyPlaylistAttributes 的值包含 2 (MPMediaPlaylistAttributeSmart),而普通播放列表包含 0
  • 项目数将等于设备上的项目总数

但是,就是这样!我看不到任何方法可以访问子文件夹。或者,在询问文件夹中包含的播放列表或子文件夹时,我看不到任何将其与父级绑定的方法。

苹果在 iTunes 中做到了,所以一定有办法。他们是否使用了一些私有 API?

4

1 回答 1

10

MPMediaPlaylist有以下未记录的属性可以使用'svalueForProperty方法为您提供所需的内容:@"isFolder"@"parentPersistentID".

请注意,这些没有记录,也没有出现在任何头文件中,因此根据 Apple 的应用程序提交规则,使用它们可能被视为使用“私有 API”。

我已经向 Apple 提交了一份错误报告,要求在头文件中提供这些错误报告,并要求澄清它们是否被视为私有 API 的一部分。

于 2012-09-11T11:54:55.547 回答