通讯录排序(按首字母顺序)

效果:



1.使用

//模拟数据

-(void)loadData

{

    NSArray *dataArr = @[

                     @"比昂",@"阿狸",@"阿三",@"小明",@"张三",@"秋秋",@"波比",@"苏三",@"馒头",@"彩笔",@"咪咪",@"蔡芯",@"成龙",@"陈鑫",@"陈丹",@"成名",@"阿伟",@"阿姨",@"芳仔",@"房祖名",@"方大同",@"芳芳",@"范伟",@"郭靖",@"郭美美",@"过儿",@"过山车"

                     ];

    NSLog(@"原始数据 ==>> %@",dataArr);

    _MyData = [self Transformation:dataArr];

    NSLog(@"数据转换 ==>> %@",_MyData);

    [self.MyTableView reloadData];

    

}


2.核心代码 (排序)

- (NSMutableArray *)Transformation:(NSArray *)dataArray

{

    NSMutableArray *TwoArr = [NSMutableArray array];

    for (NSString *TransformationStr in dataArray)

    {

        NSMutableString *pinyin = [TransformationStr mutableCopy];

        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformMandarinLatin, NO);

        CFStringTransform((__bridge CFMutableStringRef)pinyin, NULL, kCFStringTransformStripCombiningMarks, NO);

        [TwoArr addObject:pinyin];

    }

    NSMutableArray *ThreeArr = [NSMutableArray array];

    for (__strong NSString *ScreenStr in TwoArr)

    {

        ScreenStr = [ScreenStr substringToIndex:1];

        if (ThreeArr.count == 0)

        {

            [ThreeArr addObject:ScreenStr];

        }

        else

        {

            BOOL bl = [ThreeArr containsObject:ScreenStr];

            if (!bl)

            {

                [ThreeArr addObject:ScreenStr];

            }

        }

    }

    NSArray *FourArr = [ThreeArr sortedArrayUsingSelector:@selector(compare:)];

    NSMutableArray *MyArr = [NSMutableArray array];

    for (NSString *str in FourArr)

    {

        NSMutableDictionary *dic = [NSMutableDictionary dictionary];

        [dic setObject:str forKey:@"title"];

        NSMutableArray *arr = [NSMutableArray array];

        for (int i = 0; i < TwoArr.count; i++)

        {

            NSString *missstr = TwoArr[i];

            missstr = [missstr substringToIndex:1];

            if ([str isEqualToString:missstr])

            {

                [arr addObject:dataArray[i]];

            }

        }

        [dic setObject:arr forKey:@"info"];

        [MyArr addObject:dic];

    }

    return MyArr;

}


Demo下载地址:通讯录自动排序