【发布时间】:2014-08-04 12:11:38
【问题描述】:
我正在尝试像在音乐应用程序中一样对数组进行排序:ABCDEFG...АБВГ...#547368%; 这是排序:
NSString *sortOrder = @"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzАаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЭэЮюЯя_0123456789";
NSComparator comp = ^NSComparisonResult(id obj1, id obj2)
{
char char1 = [(NSString *)obj1 characterAtIndex: 0];
char char2 = [(NSString *)obj2 characterAtIndex: 0];
int index1;
for (index1 = 0; index1 < sortOrder.length; index1++)
if ([sortOrder characterAtIndex: index1] == char1)
break;
int index2;
for (index2 = 0; index2 < sortOrder.length; index2++)
if ([sortOrder characterAtIndex: index2] == char2)
break;
if (index1 < index2)
return NSOrderedAscending;
else if (index1 > index2)
return NSOrderedDescending;
else
return [(NSString *)obj1 compare: obj2 options: NSCaseInsensitiveSearch];
};
NSSortDescriptor *sortDescriptor=[[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:comp];
arrayOfContactsAndCompanies = (NSMutableArray*)[arrayOfContactsAndCompanies sortedArrayUsingDescriptors:@[sortDescriptor]];
但结果是:ABCDEFG(英文字母)..1235#45(数字)..АБВГ(俄语字母) 将俄语字母转换为 char 似乎存在问题。
【问题讨论】: