IOS开发 汉字转拼音 把用户名按照姓名首字母进行排序

来源:互联网 发布:ipad软件推荐 编辑:程序博客网 时间:2024/05/16 14:07

//第一步 汉字转拼音 有2种方法 一种是使用ChineseString 别人写的类  第二种是IOS自带的方法 我使用的便是第二种 

               NSMutableString *ms = [[NSMutableStringalloc]initWithString:model.contactNickName];

                //带声仄 //不能注释掉

                if (CFStringTransform((__bridgeCFMutableStringRef)ms,0,kCFStringTransformMandarinLatin,NO)) {

                    //                        NSLog(@"pinyin: ---- %@", ms);

                }

                if (CFStringTransform((__bridgeCFMutableStringRef)ms,0,kCFStringTransformStripDiacritics,NO)) {

                    

                    NSString *bigStr = [ms uppercaseString]; // bigStr 是转换成功后的拼音

                    NSString *cha = [bigStr substringToIndex:1];

                    model.firstLetter = cha;  // cha 是汉字的首字母

                    //                        NSLog(@"pinyin: %@ ======== %@ ====== %@",model.nickname,ms, cha);

                    

                }


//第二步 根据第一步获取到的 拼音首字母 对汉字进行排序

-(NSMutableArray *)userSorting:(NSMutableArray *)modelArr{

    

    NSMutableArray *array = [[NSMutableArrayalloc]init];

    

    for(int i='A';i<='Z';i++)

    {

        NSMutableArray *rulesArray = [[NSMutableArrayalloc]init];

        

        NSString *str1=[NSStringstringWithFormat:@"%c",i];

        for(int j=0;j<modelArr.count;j++)

        {

            CardBookModel *model = [modelArr objectAtIndex:j];  //这个model 是我自己创建的 里面包含用户的姓名 手机号 和 转化成功后的首字母

            if([model.firstLetterisEqualToString:str1])

            {

                [rulesArray addObject:model];    //把首字母相同的人物model 放到同一个数组里面

                [modelArr removeObject:model];   //model 放到 rulesArray 里面说明这个model 已经拍好序了 所以从总的modelArr里面删除

                j--;

                

            }else{

                

            }

        }

        if (rulesArray.count !=0) {

            [array addObject:rulesArray];

            [indexArrayaddObject:[NSStringstringWithFormat:@"%c",i]];//把大写字母也放到一个数组里面 

        }

    }

    

    if (modelArr.count !=0) {

        [array addObject:modelArr];

        [indexArray addObject:@"#"];  //把首字母不是A~Z里的字符全部放到 array里面 然后返回

    }

    

    return array;

 

}



这个是我做项目的时候 需要自定义通讯录写的,入行不长时间 还很稚嫩,希望不对的 请指出来 


1 0
原创粉丝点击