NSArray에서 한글,영문순으로 정렬하기
NSSortDescriptor를 사용하면 숫자, 영문, 한글 순서대로 정렬이 된다. 오늘 요청을 받은게 한글, 영문 순서로 정렬되었으면 하는 요청을 받았다. 인터넷에서 찾은 소스는 배열안에 NSString만 받는걸 기준으로 되있어서 해당 소스를 블록문을 사용해서 안에 있는 오브젝트를 비교하는 형식으로 변경하였다. NSArray 안에 다른 객체별로 클래스를 맞춘후 비교하면 문제 없이 정렬되는것을 확인하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
NSArray *sortedArray = [sortedArray sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) { NSString* left = [NSString stringWithFormat:@"%@%@", [obj1 localizedCaseInsensitiveCompare:@"ㄱ"]+1 ? @"0" : !([obj1 localizedCaseInsensitiveCompare:@"a"]+1) ? @"2" : @"1", obj1]; NSString* right = [NSString stringWithFormat:@"%@%@", [obj2 localizedCaseInsensitiveCompare:@"ㄱ"]+1 ? @"0" : !([obj2 localizedCaseInsensitiveCompare:@"a"]+1) ? @"2" : @"1", obj2]; NSComparisonResult comparisonResult = [left localizedCaseInsensitiveCompare:right]; return comparisonResult; }]; |
참조 글 – https://gist.github.com/acidsound/5072229