Получение соответствующего MPMediaItem с MPMediaItemPropertyPersistentID

Мне нужно получить соответствующий MPMediaItem с постоянным идентификатором, который я сохранил с помощью NSUserDefaults. Мой текущий способ сделать это — получить все MPMediaItems, прокрутить их и найти тот, который имеет тот же постоянный идентификатор, который я сохранил. Я думаю, что это действительно плохая производительность, поэтому существует ли существующий метод получения MPMediaItem с постоянным идентификатором, который у меня есть? Я проверил документацию Apple, но не смог ее найти.


person JLT    schedule 17.10.2015    source источник


Ответы (1)


Вы можете получить более высокую производительность, чем линейная, просматривая свои MPMediaItem элементы с помощью запроса с уникальным идентификатором:

MPMediaQuery*   query = [MPMediaQuery songsQuery];  // general songs query

MPMediaPropertyPredicate* pred = [MPMediaPropertyPredicate predicateWithValue:persistentID
                                                                  forProperty:MPMediaItemPropertyPersistentID];
// narrow the query down to just items with that ID
[query addFilterPredicate:pred];

// now get items (there should be only one):
MPMediaItem *item = [query.items firstObject];
person Rhythmic Fistman    schedule 17.10.2015
comment
Очень полезно. Большое спасибо! :) - person JLT; 17.10.2015