美文网首页干货带我飞2ios框架
根据中文排序/升序or降序

根据中文排序/升序or降序

作者: 91阿生 | 来源:发表于2015-09-15 13:55 被阅读952次

    最近一直在整APP上能用的知识点,正好整到排序这个知识点,觉得似乎有点淡忘了,所以把他记录下来,和大家分享.这里用到了

    #import"ChineseString.h" //此类中有两个Nsstring对象(string和pinyin)用于存放原字符串(中文)和字符串转为拼音的字符串(中文对应的拼音).

    #import"pinyin.h" 

    这两个类可以去我的github上下载: https://github.com/StephentTom/pinyinFile

    类似

    sort

    A-Z:为升序; Z-A:为降序.


    加入头文件

    #import"ChineseString.h"

    #import"pinyin.h"

    @interfaceViewController()

    @property(nonatomic,strong)NSArray*stringsToSort;

    @end

    @implementationViewController

    -(NSArray*)stringsToSort{

    if(!_stringsToSort){

    _stringsToSort=@[@"谷歌",@"萌萌哒",@"嘿嘿见鬼了",@"推特",@"百度",@"再来一次",@"蜀山",@"键盘",@"鼠标",@"阿门",@"苹果"]; }

    return_stringsToSort;

    }

    //没有排序的列表

    for (int i= 0 ;i<self.stringsToSort.count; i++){

        NSLog(@"%@\n",[self.stringsToSortobjectAtIndex:i]);

    }

    未排序

    // 将中文字符串赋值给类中得字符串,一个中文就是一个ChineseString对象,这里得创建一个可变数组,用来存储ChineseString对象

    NSMutableArray *letterResult = [NSMutableArray array];

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

          ChineseString*chineseString = [ [ChineseString alloc] init]; 

          chineseString.string=self.stringsToSort[i]; 

          if(chineseString.string==nil){

                chineseString.string=@"";  }

           NSString *pinYinResult = [NSString string];  //一个中文对应一个      pinYinResult(中文的拼音)

         if( ! [chineseString.string isEqualToString: @""])

     {

         //获取中文每个字的首字母 . letter:字母         

         for(int j =0; j<chineseString.string.length; j++){

              //得到中文中每个字的首字母 

            NSString*singlePinYinLetter =                      [[NSStringstringWithFormat:@"%c",pinyinFirstLetter([chineseString.stringcharacterAtIndex:j])] uppercaseString];//中文转拼音首字母的函数: pinyinFirstLetter    uppercaseString:  表示大写字母

         //拼接中文每个字的首字母,最终得到此中文的拼音

          pinYinResult = [pinYinResultstring ByAppendingString: singlePinYinLetter]; 

         }

        chineseString.pinYin =  pinYinResult ;

    }else{

        chineseString.pinYin=@""; 

          }

    [letterResulta ddObject:chineseString];

    }

     NSLog(@"\r\r获取了中文每个字的首字母列表:");

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

    ChineseString *appendingLetter = letterResult[i];

    NSLog(@"中文__%@首字母__%@",appendingLetter.string,appendingLetter.pinYin);

    }

    未排序 -- 得到每个中文对应的拼音 

    //接下来就是对字母进行排序

    // 1> 创建排序描述器

    NSSortDescriptor *descriptor =  [NSSortDescriptorsortDescriptorWithKey: @"pinYin"  ascending:YES]; //yes:升序,反之. pinYin:表示要进行排序的key(kvc),之前我们把中文转为拼音的时候,chineseString.pinYin =  pinYinResult ;  我们要排序的就是pinYin

    //2> 存放排序器

    NSArray *descriptorArray = [NSArray arrayWithObjects: descriptor,nil];

    //3>进行排序

    NSArray *descriptorResult = [letterResult sortedArrayUsingDescriptors : descriptorArray];

    NSLog(@"\r\r排序完成的结果:");

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

    ChineseString *result = descriptorResult[i];

        NSLog(@"原文字__%@字母__%@",result.string,result.pinYin);

    }

    排序后的结果

    }@end

    相关文章

      网友评论

      • 1b2ae550dc99:2459736893@qq.com,谢大神的文章和分享
        91阿生:@行进的NSLog 刚上传与我的github: https://github.com/StephentTom/pinyinFile
      • 9d8bd178a546:641156127@qq.com,麻烦把那两个类共享我一份
        91阿生:@9d8bd178a546 刚上传与我的github: https://github.com/StephentTom/pinyinFile
      • 元宇宙协会:309394652@qq.com,谢谢大牛的指点,感激不尽
      • 一抹相思泪成雨:你好 可以发送下源码吗?1522144903@qq.com 谢谢!!!
      • y浪淘沙y:你好。那两个类可以共享一下吗:kingdev@126.com
        9d8bd178a546:@kingdev 能把这两个类给我份吗?641156127@qq.com
        y浪淘沙y: @91阿生 3Q
        91阿生:@kingdev 已发送

      本文标题:根据中文排序/升序or降序

      本文链接:https://www.haomeiwen.com/subject/lykmcttx.html