iOS의 몇 가지 간단하고 효과적인 배열 정렬 방법

3077 단어
//첫 번째, 수조를 이용하는sortedArrayUsingComparator는 NSComparator,obj1과obj2가 가리키는 수조의 대상을 호출한다
NSComparator cmptr = ^(id obj1, id obj2){
 if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
 
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
};
NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];
 // 
 NSMutableString *outputBefore = [[NSMutableString alloc] init];
 for(NSString *str in sortArray){
  [outputBefore appendFormat:@"];
 }
 NSLog(@" :%@",outputBefore);
 // 
 NSArray *array = [sortArray sortedArrayUsingComparator:cmptr];
 
 NSMutableString *outputAfter = [[NSMutableString alloc] init];
 for(NSString *str in array){
  [outputAfter appendFormat:@"];
 }
 NSLog(@" :%@",outputAfter);

두 번째 정렬 방법은sortedArrayUsingFunction을 이용하여 대응 방법인customSort를 호출하는데 이 방법에서obj1과obj2는 각각 지수 그룹의 대상이다.
NSInteger customSort(id obj1, id obj2,void* context){
 if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }
 
    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}
 NSArray *sortArray = [[NSArray alloc] initWithObjects:@"1",@"3",@"4",@"7",@"8",@"2",@"6",@"5",@"13",@"15",@"12",@"20",@"28",@"",nil];
 // 
 NSMutableString *outputBefore = [[NSMutableString alloc] init];
 for(NSString *str in sortArray){
  [outputBefore appendFormat:@"];
 }
 NSLog(@" :%@",outputBefore);
 
 NSArray *array = [sortArray sortedArrayUsingFunction:customSort context:nil];
 NSMutableString *outputAfter = [[NSMutableString alloc] init];
 for(NSString *str in array){
  [outputAfter appendFormat:@"];
 }
 NSLog(@" :%@",outputAfter);

세 번째는sortUsingDescriptors를 이용하여 NSSortDescriptor NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey: @ "price"ascending: NO];그 중에서 price는 수조의 대상의 속성으로 수조의 저장 대상을 대상으로 하는 것이 비교적 간결하고 편리하다
  NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:&sortDescriptor count:1];
  [_totalInfoArray sortUsingDescriptors:sortDescriptors];
  [_airListView refreshTable:_totalInfoArray];

 NSString *s1 = @"sdf";
        NSArray  *arr1 = @[@"1",@"2"];
        NSDictionary *dict1 = @{@"1":@"a",@"2":@"b"};
        NSMutableArray *arr2 = @[@"1",@"2"].mutableCopy;
        NSMutableDictionary *dict2  = @{@"a":@"1",@"b":@"2"}.mutableCopy;
        //  , .mutablecopy 

좋은 웹페이지 즐겨찾기