У меня есть массив «комнатных» объектов, каждый из которых имеет свойство «room.descritpion», которое представляет собой NSString, содержащее сочетание буквенно-цифровых символов. Эти номера необходимо сортировать в массиве с использованием свойства «room.description» с возрастающим алфавитным порядком, а затем по порядку номера по возрастанию. Я могу легко сортировать по алфавиту, но я борюсь с тем, как включить второй сорт, который будет основываться на числе, следующем за буквой, например. L21 L19 A34 A12 следует заказывать в массиве как A12, A34, L19, L21 и т. Д. Приоритет поиска должен быть первым, а затем номером, поэтому в конце массива попадает комната с номерами. Буквы и цифры не всегда совпадают с порядком, то есть буква не всегда первая. Я внимательно прочитал документацию, но, похоже, не могу найти способ приблизиться к этому. Я рад использовать блоки, если это облегчает процесс. Любая помощь будет принята с благодарностью.Сортировка NSArray объектов по букве, а затем номер
ответ
Это
var arr = ["A6", "A2", "3", "B4", "L8", "4", "B7"]
let sortedArr = arr.sort({String($0) < String($1)})
print(sortedArr)
распечатает
["3", "4", "A2", "A6", "B4", "B7", "L8"]
NSArray *unorderedTitles = [NSArray arrayWithObjects:@"L21",@"L19",@"A34",@"A12",@"A1", nil];
NSArray *orderedTitles = [unorderedTitles sortedArrayUsingSelector:@selector(localizedStandardCompare:)];
NSLog(@"orderedTitles %@",orderedTitles);
Прошло это, но оно сгенерировало исключение *** Завершение приложения из-за неперехваченного исключения 'NSInvalidArgum entException ', reason:' - [Номера localizedStandardCompare:]: непризнанный селектор отправлен в экземпляр 0x79fc8310 'Я предполагаю, что это потому, что объекты в массиве являются объектами комнаты, которые имеют свойство строки, которое описывает их. Я не могу организовать напрямую через строки. В любом случае, ссылаться на свойство room.description, используя этот метод, а не на объект комнаты, который, как я полагаю, происходит здесь. – jon
кто бы ни проголосовал, должен дать повод. Это поможет мне узнать то, что я делаю неправильно. Любая критика приветствуется. –
http://stackoverflow.com/questions/2846301/how-to-do-a-natural -sort-on-an-nsarray –