今天做一个国家码的页面,要求根据字母升序的顺序排序。鼓捣了好久,现在来记录一下,避免再次入坑。
1.一个数组NSArray,数组中存的是“A”,“D”、“B”这样的NSString类型的数据,顺序是乱的。要求按升序排列。
2.比较两个字符串的大小,用- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask方法,如:
NSComparisonResult result = [obj1 compare:obj2 options:NSLiteralSearch];
用冒泡排序。如果obj1>obj2,将两个位置互换。互换用这个方法:[self.dataArray exchangeObjectAtIndex:i withObjectAtIndex:j];
3.OC中有专门的排序方法,只要传入排序规则,自动生成排好的序列:
//按升序方式排序 self.keys是需要排序的无序数组,result 是排好的有序数组。
NSArray *result = [self.keys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1 , id _Nonnull obj2)
{
// NSLog(@"%@~%@",obj1,obj2); //A~B,C~D
return [obj1 compare:obj2 options:NSLiteralSearch]; //升序
}];