//第一步 汉字转拼音 有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
{
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;
}
这个是我做项目的时候 需要自定义通讯录写的,入行不长时间 还很稚嫩,希望不对的 请指出来