Я создал экземпляр запроса, чтобы запросить коллекцию всех списков воспроизведения на моем iPod Touch. Результат, возвращенный из свойства collections MPMediaQuery, содержит 43 элемента. К ним относятся все 17 списков воспроизведения, которые показывает родное приложение «Музыка». Однако коллекция также содержит 26 «списков воспроизведения», которые на самом деле являются альбомами из моей библиотеки iPod. Это представляет некоторые (но не все) альбомы на iPod.
Я пытался увидеть, есть ли атрибут MPMediaPlaylist, который мог бы отличать альбомы от реальных списков воспроизведения, но безрезультатно. Я просмотрел разделы коллекции, чтобы убедиться, что настоящие плейлисты хранятся в отдельных разделах от альбомов, но там был только один раздел. Наконец, я посмотрел, есть ли у альбомов PersistantID, который, как указано в документации, уникален для списков воспроизведения. Все элементы в массиве имеют PersistantID.
Приложение «Музыка» без проблем отображает только 17 актуальных плейлистов, так что, должно быть, я что-то упускаю. Вот код, используемый для построения запроса:
MPMediaQuery * myPlaylistsQuery = [ MPMediaQuery playlistsQuery ];
NSArray * playlists = [ myPlaylistsQuery collections ];
Вот пример данных, которые регистрируются при запросе содержимого массива «playlists»:
================================================== ===
Список плейлистов
.... В коллекции плейлистов 01 раздел
.... В коллекции плейлистов 43 объекта MPMediaPlaylist
Бах
... . Постоянный ID: 17002820337772537981
Лучшее от Саймона и Гарфанкеля
.... Постоянный ID: 2965021518813542622
Blue
.... Постоянный ID: 11514004552991695558
Blues
.... Постоянный идентификатор: 14243796139384893728
.... (и т. д.)
В приведенном выше списке записи «Bach», «Best of Simon and Garfunkel» и «Blue» представляют собой альбомы. Запись «Blues» представляет собой первый из настоящих списков воспроизведения, которые я определил в iTunes.
Я полагаю, что я мог бы сравнить элементы, возвращенные из запроса плейлиста, с элементами в запросе альбомов и исключить любые совпадения. Есть ли более простое решение?