中文转拼音,分组与排序

来源:互联网 发布:淘宝店铺扣24分后果 编辑:程序博客网 时间:2024/06/05 07:56

这篇文章是后台接口直接把一堆数据不排序直接丢过来的情况下,这时候APP实现排序分组的方法。

待修改。。

实现的效果

参考:

http://www.cnblogs.com/syxchina/archive/2012/10/11/2720257.html
并使用其中的文件
ChineseString.h
ChineseString.m
pinyin.h
pinyin.c

实现

#import "ChineseString.h"#import "pinyin.h"#pragma mark - 中文转拼音排序/** *  @param FriendsListArr GetFriendModel的数组 * *  @return FriendGroup模型的数组 */-(NSMutableArray *)ChineseChangePinyin:(NSArray *)FriendsListArr{     NSMutableArray *FriendsList = [NSMutableArray arrayWithArray:FriendsListArr];    if(FriendsList.count == 0){        return [NSMutableArray array];    }    NSLog(@"FriendsList :%@",FriendsList);     NSMutableArray *nameArray = [[NSMutableArray array]init];    for(GetFriendModel *dict in FriendsList){         NSString *name = dict.FriendName;        [nameArray addObject:name];    }    //获取字符串中文字的拼音首字母并与字符串共同存放    NSMutableArray *chineseStringsArray=[NSMutableArray array];    for(int i=0 ; i<[nameArray count] ; i++){        ChineseString *chineseString=[[ChineseString alloc]init];        chineseString.string=[NSString stringWithString:[nameArray objectAtIndex:i]];        if(chineseString.string==nil){            chineseString.string=@"";        }        if(![chineseString.string isEqualToString:@""]){            NSString *pinYinResult=[NSString string];            for(int j=0;j<chineseString.string.length;j++){                NSString *singlePinyinLetter=[[NSString stringWithFormat:@"%c",pinyinFirstLetter([chineseString.string characterAtIndex:j])]uppercaseString];                pinYinResult=[pinYinResult stringByAppendingString:singlePinyinLetter];            }            chineseString.pinYin=pinYinResult;        }else{            chineseString.pinYin=@"#";        }        [chineseStringsArray addObject:chineseString];    }    //按照拼音首字母对这些Strings进行排序    NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin" ascending:YES]];    [chineseStringsArray sortUsingDescriptors:sortDescriptors];    //分类    NSMutableArray *groupArray = [NSMutableArray array];    int num = 0;    while (1) {         FriendGroup *Group = [[FriendGroup alloc]init];        NSMutableArray *Friend = [NSMutableArray array];        ChineseString *chineseString=[chineseStringsArray objectAtIndex:num];        NSString *pinyin = [chineseString.pinYin substringToIndex:1];        //        NSLog(@"chineseString.pinYin %@  ",pinyin);        for(int i = num; i<[chineseStringsArray count] ;i++ ) {            ChineseString *nextName=[chineseStringsArray objectAtIndex:num];            //如果首字母相同,加入Group的Friend数组。否则跳出遍历            if([pinyin isEqualToString:[nextName.pinYin substringToIndex:1]]){                NSString *FriendName = nextName.string;                for( GetFriendModel *friend in FriendsList){                    if([friend.FriendName isEqualToString:FriendName]){                        [Friend addObject:friend];                        break;                    }                }                num++;            }else{                break;            }        }         Group.Group = [chineseString.pinYin substringToIndex:1];        Group.FriendArray = Friend;        [groupArray addObject:Group];        if(num == chineseStringsArray.count){            break;        }     }    NSLog(@"groupArray : %@",groupArray);    return groupArray;}

GetFriendModel

GetFriendModel

屏幕快照 2016-06-21 下午10.39.32.png

屏幕快照 2016-06-21 下午10.39.22.png

0 0
原创粉丝点击