Ios 按字母然后按数字对对象数组进行排序

Ios 按字母然后按数字对对象数组进行排序,ios,swift,sorting,nsarray,alphanumeric,Ios,Swift,Sorting,Nsarray,Alphanumeric,我有一个“room”对象数组,每个对象都有一个名为“room.description”的属性,该属性是一个包含字母数字字符组合的NSString。这些房间需要使用“room.description”属性按字母升序排列,然后按数字升序排列。我可以很容易地完成字母排序,但我正在努力解决如何合并第二个排序,它将基于字母后面的数字,例如L21 L19 A34 A12应作为A12、A34、L19、L21等在阵列中订购。搜索的优先级应该是字母优先,然后是数字,因此只有数字的房间位于数组的末尾。字母和数字的顺

我有一个“room”对象数组,每个对象都有一个名为“room.description”的属性,该属性是一个包含字母数字字符组合的NSString。这些房间需要使用“room.description”属性按字母升序排列,然后按数字升序排列。我可以很容易地完成字母排序,但我正在努力解决如何合并第二个排序,它将基于字母后面的数字,例如L21 L19 A34 A12应作为A12、A34、L19、L21等在阵列中订购。搜索的优先级应该是字母优先,然后是数字,因此只有数字的房间位于数组的末尾。字母和数字的顺序并不总是相同的,即字母并不总是在第一位。我已经彻底阅读了文档,但似乎找不到解决这个问题的方法。我很乐意使用块,如果它能使过程更容易。任何帮助都将不胜感激

这个

var arr = ["A6", "A2", "3", "B4", "L8", "4", "B7"]
let sortedArr = arr.sort({String($0) < String($1)})
print(sortedArr)

尝试了一下,但它生成了一个异常***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[Rooms localizedStandardCompare:]:无法识别的选择器发送到实例0x79fc8310'我猜这是因为数组中的对象是房间对象,它们具有描述它们的字符串属性。我不能直接通过字符串进行组织。是否仍然可以使用此方法引用room.description属性而不是room对象(我认为这里正在发生这种情况)。投票被否决的人应该给出原因。这将帮助我了解我做错的事情。欢迎任何批评。
["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);