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

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

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

#import"pinyin.h" 

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

类似

根据中文排序/升序or降序_第1张图片
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

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

}


根据中文排序/升序or降序_第2张图片
未排序

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

NSMutableArray *letterResult = [NSMutableArray array];

for(int i =0; 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

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

        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);

}

根据中文排序/升序or降序_第3张图片
未排序 -- 得到每个中文对应的拼音 

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

// 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

ChineseString *result = descriptorResult[i];

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

}


根据中文排序/升序or降序_第4张图片
排序后的结果

}@end

你可能感兴趣的:(根据中文排序/升序or降序)