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. hdu 4111 Alice and Bob 记忆化搜索 博弈论

    Alice and Bob Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  2. Google Code Jam Africa 2010 Qualification Round Problem A. Store Credit

    Google Code Jam Qualification Round Africa 2010 Problem A. Store Credit https://code.google.com/code ...

  3. hihocoder 1523:数组重排2

    题目链接 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个1-N的排列A1, A2, ... AN,每次操作小Hi可以选择一个数,把它放到数组的最左边. 请计算小 ...

  4. Linux使用C语言链接MsSQL

    1.安装gcc编译器 yum install gcc 2.下载freetds wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched ...

  5. MSChart使用小结

        在用到图表展示某项.多项信息的统计情况,很正常联想到MSChart控件.        以VS2008开发为例,在工具箱也中右击,选择”choose items“,打开对话框,选择COM组件T ...

  6. Web安全开发指南--文件系统

    6.1.上传文件功能 简要描述 文件上传漏洞是由于文件上传功能实现代码没有对用户上传的文件进行正确处理,导致允许攻击者向服务某个目录上传文件. 解决方案 上传文件功能只对登录用户开放: 同时通过文件头 ...

  7. 使用OData快速构建REST服务

    OData是微软支持的一种查询标准,它的第四版使用了REST规范,看起来简洁多了.它的最大的特点是可以在客户端自行配制查询条件,使用它构建REST服务时再也不用担心查询的扩展性问题了. 如下是几个简单 ...

  8. 实战DELPHI:远程线程插入(DLL注入)

    http://www.jx19.com/xxzl/Delphi/2010/04/17/ShiZhanDELPHI_YuanChengXianChengChaRu_DLLZhuRu/ 远程注入DLL方法 ...

  9. Spring自动扫描组件

    通常情况下,声明所有的Bean类或组件的XML bean配置文件,这样Spring容器可以检测并注册Bean类或组件. 其实,Spring是能够自动扫描,检测和预定义的项目包并实例化bean,不再有繁 ...

  10. win7 系统装SQLServer2000 成功

    昨天在win7上装SQLServer数据库,写一下体会.首先,如果以前安装的话,要删除干净.我也找了半天的网络资料.1.把原来SQLServer的安装目录 C:\Program Files\Micro ...