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

NSArray利用Cocoa框架进行汉字排序,第1张

概述NSArray利用Cocoa框架进行汉字排序 在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比较,返回一个本地化的比较结果,也就是说这个函数是支持汉字比较的。 Student.h @interface Student : NSObject @property(nonatomic,copy)NSString *stuName; @property(n NSArray利用Cocoa框架进行汉字排序

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


Student.h

@interface Student : NSObject

@property(nonatomic,copy)Nsstring *stuname;

)CGfloat stuscore;

)Nsstring *stuSex;

)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 = [[ alloc] initWithname:@"电脑" andStuscore:34.5 andStuSex:@" andStuAge20];

    Student *stu2 = [[Student alloc] initWithname:@"鼠标" andStuscore:34.7 andStuSex:@"" andStuAge:21];

    Student *stu3 = [[Student alloc] initWithname:@"键盘" andStuscore:45.6 andStuSex:@"nan" andStuAge:22];

    Student *stu4 = [[Student alloc] initWithname:@"显示器" andStuscore:34.6 andStuSex:@"" andStuAge:23];

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

stuAge);

    }

    return 0;



这样做会有几方面的好处:1 支持多个汉字按字母序排序(若第一个字的第一个字母相同,则按第一个字的第二个字母比较,若第一个字的字母完全相同,按第二个字的首字母继续排序)。 2原本可能需要保存汉字拼音的地方,现在不需要了。 3 可以通过对nicknameSortde进一步定制,完成更复杂的比较,比如先比较会员状态,在按姓名字母序完成比较。4整体结构简单 使用的都是Cocatouch框架下的的方法。

总结

以上是内存溢出为你收集整理的NSArray利用Cocoa框架进行汉字排序全部内容,希望文章能够帮你解决NSArray利用Cocoa框架进行汉字排序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1051675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存