2013-09-25 3 views
0

Я разрабатываю приложение, в котором пользователь должен выбрать песню из своей музыкальной библиотеки. Когда я изучал документацию, я видел сборщика медиа, но поскольку он не был настроен каким-либо образом, я решил, что лучше всего реализовать свой собственный сборщик музыки.iOS копирует алфавитную последовательность музыкального приложения

Проблема, с которой я столкнулся, заключается в сортировке, сделанной iOS под именами песен, в алфавитном порядке. Позвольте мне уточнить.

Когда я получаю список песен через MPMediaQuery, список уже набирается, но не в обычном алфавитном порядке. Тот, который он использует, такой же, как в музыкальном приложении, что немного отличается. Например, он игнорирует некоторые слова в начале названия, такие как и , так что «The A Team» считается как начиная с буквы а и «Тысяча лет» с письмо t. Он также игнорирует круглые скобки и тому подобное.

Проблема в том, что я не знаю точно, как она решает, что происходит первым. Кроме того, без чего-то автоматическое, это делает невозможным локализацию. Мне нужно было точно знать, как это делается, чтобы я мог разделить песни по разделам, например.

Итак, настоящий вопрос: есть ли способ репликации такого рода сортировки? Может быть, какой-то метод, который сортирует NSStrings, спрятанный в другом классе (например, NSArray или NSDictionary) или, возможно, что-то в функциях локализации, что-нибудь, что может мне помочь.

Заранее спасибо: D

ответ

0

Вы должны использовать отсортированные массивы с помощью сортировки дескриптора (см):

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
sortedArray = [anArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 

Это возвращает массив со всех элементов в «истинной» алфавитном порядке. Помогает ли это вообще?

Взгляните на localizedCompare:

How to sort NSString like iTunes sorting?

+0

Я думал, что это будет, но это не так. По-видимому, сравнение по умолчанию, используемое дескрипторами сортировки, не является тем, которое мне нужно, но «общим» (a перед b до t и т. Д.). Исходя из вашего предложения, я просмотрел методы сравнения NSString, но они также дают мне эту нежелательную сортировку, даже локализованные. – user1692466

+0

Какой вам нужен? Вы хотите, чтобы он опускал такие вещи, как «the» и т. Д.? – CW0007007

+1

Для тех, кто посещает здесь, есть ссылка на эту должность, которая объясняет различия между общим порядком и тем, что я ищу. Это не то, что я ожидал, но я могу сам сделать алгоритм сортировки из этой информации. Спасибо за помощь. – user1692466

Смежные вопросы