MPMediaQuery для плейлистов (на iPod) включает некоторые альбомы

Я создал экземпляр запроса, чтобы запросить коллекцию всех списков воспроизведения на моем 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.

Я полагаю, что я мог бы сравнить элементы, возвращенные из запроса плейлиста, с элементами в запросе альбомов и исключить любые совпадения. Есть ли более простое решение?


person user2121934    schedule 01.03.2013    source источник


Ответы (1)


Я часто использую [[MPMediaQuery playlistsQuery] collections], и в результате ни разу не вернулся альбом. Я предполагаю, что проблема где-то еще в вашем коде. Например, вы все еще можете настроить playlistsQuery после его создания с добавлением/удалением параметров вручную, и если вы сильно измените, вы даже можете позволить запросу возвращать альбомы вместо списков воспроизведения.

Особенно проверьте свойство groupingType запроса. Для playlistQuery по умолчанию должно быть установлено значение MPMediaGroupingPlaylist, но, возможно, вы переопределили или удалили это свойство вручную для своего запроса.

В противном случае остается только возможность ошибки в системном API вашего устройства или библиотеке iTunes. Но это очень, очень, очень маловероятно!

person miho    schedule 15.03.2013
comment
Привет Михо, спасибо за ваш ответ. Очень полезно знать, что другие без проблем используют [[MPMediaQuery playListQuery] collections]. Как вы рекомендуете, я проверил groupingType для запроса и получил значение 6, указывающее, что это MPMediaGroupingPlaylist. Ваше замечание о том, что добавление или удаление параметров может изменить запрос, является правильным. Однако две строки кода, показанные в первом сообщении, являются первыми двумя строками, выполняемыми в моем коде (вне основного). Я согласен, что ошибка API или iTunes маловероятна, но у меня заканчиваются правдоподобные варианты. - Джордж - person user2121934; 10.04.2013