按字母然后按数字对对象的 NSArray 进行排序

Sorting an NSArray of Objects by Letter then number

我有一个 "room" 对象数组,每个对象都有一个名为 "room.descritpion" 的 属性,它是一个包含字母数字字符混合的 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([=10=]) < String()})
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);

Duplicated