NSArray利用Cocoa框架进行汉字排序

在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比較,返回一个本地化的比較结果。也就是说这个函数是支持汉字比較的。

Student.h

@interface Student :
NSObject

@property(nonatomic,copy)NSString *stuName;

@property(nonatomic,assign)CGFloat stuScore;

@property(nonatomic,copy)NSString *stuSex;

@property(nonatomic,assign)NSInteger stuAge;

-(id)initWithName:(NSString *)stuName

andStuScore:(CGFloat) stuScore

andStuSex:(NSString *) stuSex

andStuAge:(NSInteger) stuAge;

+(id)StudentWithName:(NSString *)stuName

andStuScore:(CGFloat) stuScore

andStuSex:(NSString *) stuSex

andStuAge:(NSInteger) stuAge;

@end

Student.m

@implementation Student

-(id)initWithName:(NSString *)stuName

andStuScore:(CGFloat) stuScore

andStuSex:(NSString *) stuSex

andStuAge:(NSInteger) stuAge{

self = [super
init];

if (self) {

_stuName = stuName;

_stuScore = stuScore;

_stuSex = stuSex;

_stuAge = stuAge;

}

return
self;

}

+(id)StudentWithName:(NSString *)stuName

andStuScore:(CGFloat) stuScore

andStuSex:(NSString *) stuSex

andStuAge:(NSInteger) stuAge{

Student *stu = [[Student
alloc] initWithName:stuName
andStuScore:stuScore
andStuSex:stuSex andStuAge:stuAge];

return stu;

}

@end

main.m

Student *stu1 = [[Student
alloc]
initWithName:@"电脑"
andStuScore:34.5
andStuSex:@"男"
andStuAge:20];

Student *stu2 = [[Student
alloc]
initWithName:@"鼠标"
andStuScore:34.7
andStuSex:@"男"
andStuAge];

Student *stu3 = [[Student
alloc]
initWithName:@"键盘"
andStuScore:45.6
andStuSex:@"nan"
andStuAge];

Student *stu4 = [[Student
alloc]
initWithName:@"显示器"
andStuScore:34.6
andStuSex:@"男"
andStuAge];

NSArray *stuArray1 = [[NSArray
alloc]initWithObjects:stu1,stu2,stu3,stu4,nil];

NSArray *newArry = [stuArray1
sortedArrayUsingComparator:^NSComparisonResult(id obj1,
id obj2) {

Student *stu1,*stu2;

stu1 = (Student *)obj1;

stu2 = (Student *)obj2;

return [stu1.stuName
localizedCompare:stu2.stuName];

}];

NSLog(@"未排序前:");

for (Student *stu
in stuArray1) {

NSLog(@"name = %@,score = %g,sex = %@,age = %ld",stu.stuName,stu.stuScore,stu.stuSex,stu.stuAge);

}

NSLog(@"排序后");

for (Student *stu
in newArry) {

NSLog(@"name = %@,score = %g,sex = %@,age = %ld",stu.stuName,stu.stuScore,stu.stuSex,stu.stuAge);

}

;


这样做会有几方面的优点:1
支持多个汉字按字母序排序(若第一个字的第一个字母同样。则按第一个字的第二个字母比較,若第一个字的字母全然同样,按第二个字的首字母继续排序)。 2原本可能须要保存汉字拼音的地方。如今不须要了。

3
能够通过对nickNameSortde进一步定制。完毕更复杂的比較,比方先比較会员状态,在按姓名字母序完毕比較。4总体结构简单
使用的都是CocaTouch框架下的的方法。


NSArray利用Cocoa框架进行汉字排序的更多相关文章

  1. NSArray进行汉字排序

    由于NSArray并不直接支持对汉字的排序,这就要通过将汉字转换成拼音完毕按A~Z的排序,这看起来是个头疼的问题.由于牵扯到汉字转为拼音,kmyhy给出一个较易实现的方法,获取汉字的首字的首字母,如将 ...

  2. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcode qr = ...

  3. Java汉字排序(3)按笔划排序

    对于包含汉字的字符串来说,排序的方式主要有两种:一种是拼音,一种是笔画. 本文就讲述如何实现按笔划排序的比较器(Comparator). 作者:Jeff 发表于:2007年12月21日 11:27 最 ...

  4. NSPredicate用法总结(Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取)

    简述:Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取. 定义(最常用到的方法): NSPredicate *ca = [NSPred ...

  5. 利用AFNetworking框架去管理从聚合数据上面请求到的数据

    数据从JSON文档中读取处理的过程称为“解码”过程,即解析和读取过程,来看一下如果利用AFNetworking框架去管理从聚合数据上面请求到的数据. 一.下载并导入AFNetworking框架 这部分 ...

  6. cocoa框架 for iOS

    1.Cocoa是什么? Cocoa是OS X和 iOS操作系统的程序的运行环境. 是什么因素使一个程序成为Cocoa程序呢?不是编程语言,因为在Cocoa开发中你可以使用各种语言:也不是开发工具,你可 ...

  7. [转]Android中Xposed框架篇—利用Xposed框架实现拦截系统方法

    一.前言 关于Xposed框架相信大家应该不陌生了,他是Android中Hook技术的一个著名的框架,还有一个框架是CydiaSubstrate,但是这个框架是收费的,而且个人觉得不怎么好用,而Xpo ...

  8. 使用Swift代码演示Cocoa框架

    通过使用简单的代码学习Cocoa框架,每一个例子都通过代码和StoryBoard实现,并且总结他们的各自特点 所有完整代码将会托管到github库,https://github.com/land-pa ...

  9. UI设计实战篇——利用Bootstrap框架制作查询页面的界面

    Bootstrap框架是一个前端UI设计的框架,它提供了统一的UI界面,简化了设计界面UI的过程(缺点是定制了界面,调整的余地不是太大).尤其是现在的响应时布局(我的理解是页面根据不同的分辨率,采用不 ...

随机推荐

  1. web.xml2.3配置需要注意的顺序问题

    今天在做一个街道办事处项目时,用了eWebeditor编辑器,在按照说明文件进行web.xml配置时,在<web-app>一行上出现红叉,提示信息为:The content of elem ...

  2. 【9.23校内测试】【抽屉原理】【乱搞??(找众数】【Trie】

    看到题目一开始想到的是一道求子集和的异或和,可以用$bitset$实现求子集和.然而这道题如果要强算子集和肯定是带不动的,况且还要算方案,所以尝试去找题目中的性质. 看到整除,很容易想到如果是一段区间 ...

  3. [转]STRUTS2中的OGNL

    OGNL表达式是(Object-Graph Navigation Language)是对象图形化导航语言.OGNL是一个开源的项目,struts2中默认使用OGNL表达式语言来显示数据.与serlve ...

  4. Linux6.9用RPM方式安装MySQL5.7.21

    1.下载安装包 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar ...

  5. web前端开发必备压缩工具整理

    影响网站打开时间有两个因素,一个是网页加载速度,另一个是网站页面的大小.网站加载速度与用户所处的网络环境及主机性能有关,而网站页面的大小则由网站开发者决定,最主要的就是web前端开发工程师的工作.本文 ...

  6. STM32 USB VBUS 监控

    OTG_FS general core configuration register (OTG_FS_GCCFG) Bit 21 NOVBUSSENS: VBUS sensing disable op ...

  7. svn使用经验---不断总结

    删除文件或文件夹 svn rm  名字   --force svn  ci   (系统会提示输入提交日志) 执行完这两步后,才能被真正删除 添加文件或文件夹 svn add  文件名 --force ...

  8. linux下启动tomcat出现“This file is needed to run this program ”

    使用sh startup.sh启动tomcat 出现This file is needed to run this program 原因.sh文件都不是可执行文件,于是找到命令: chmod +x * ...

  9. HTML5制作简单画板

    <!DOCTYPE HTML> <html lang="en-US"> <head> <title></title> & ...

  10. HTML5画:线、圆、矩形、渐变

    示例一:矩形 <!DOCTYPE html><head> <meta charset=utf-8> <title>HTML5画线.圆.矩形</ti ...