Я пытаюсь найти всех художников на локальном устройстве iOS, а для каждого исполнителя - количество доступных песен для этого исполнителя.Какой самый быстрый способ в iOS получить количество песен для конкретного исполнителя?
В настоящее время я делаю это в прямой вперед моды, запрашивая для всех художников, и для каждого художника, подсчета количества элементов (композиций) в своей коллекции:
MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query setGroupingType:MPMediaGroupingArtist];
NSArray *collections = [query collections];
for (MPMediaItemCollection *collection in collections)
{
MPMediaItem *representativeItem = [collection representativeItem];
int songs = [[collection items] count];
// do stuff here with the number of songs for this artist
}
Однако это Безразлично Кажется очень эффективным, или, по крайней мере, это медленнее, чем я ожидал.
На демонстрационном устройстве iPhone 4 с несколькими сотнями художников вышеуказанный код занял около 7 секунд. Когда я прокомментировал строку, которая получает подсчет «элементов коллекции», время сокращается до 1 секунды.
Так что мне интересно, есть ли более быстрый способ получить количество песен для художников, чем то, что я делаю выше?
Обновление 09/27/2011. я вижу, что может упростить извлечение счета песня для художника, используя это:
int songs = [collection count];
Вместо того, что я делаю:
int songs = [[collection items] count];
Однако в действительности это мало влияет на производительность.
Я позаимствовал iPhone 3G, чтобы попытаться выполнить эту проблему на более медленном устройстве.
Мой код занимает 17,5 секунды, чтобы работать на этом 3G, и только 637 песен были распространены среди 308 художников.
Если я закомментируйте строку, которая извлекает количество песен, то же заканчивается устройство всего за 0,7 секунды ...
Там должен быть более быстрым способом получить количество песен на художник на устройстве IOS.