NSArray利用Cocoa框架進行漢字排序

2021-09-08 13:22:13 字數 2437 閱讀 6292

在nsstring有乙個函式localizedcompare:,它的功能是通過自身與給定字串的比較,返回乙個本地化的比較結果。也就是說這個函式是支援漢字比較的。

student.h

@inte***ce student : nsobject

@property(nonatomic,copy)

nsstring

*stuname;

@property(nonatomic,assign)

cgfloat

stuscore;

@property(nonatomic,copy)

nsstring

*stu***;

@property(nonatomic,assign)

nsinteger

stuage;

-(id)initwithname:(nsstring *)stuname

andstuscore:(cgfloat) stuscore

andstu***:(nsstring *) stu***

andstuage:(nsinteger) stuage;

+(id)studentwithname:(nsstring *)stuname

andstuscore:(cgfloat) stuscore

andstu***:(nsstring *) stu***

andstuage:(nsinteger) stuage;

@end

student.m

@implementationstudent

-(id)initwithname:(nsstring *)stuname

andstuscore:(cgfloat) stuscore

andstu***:(nsstring *) stu***

andstuage:(nsinteger) stuage

return self;

}+(id)studentwithname:(nsstring *)stuname

andstuscore:(cgfloat) stuscore

andstu***:(nsstring *) stu***

andstuage:(nsinteger) stuage

@end

main.m

student

*stu1 = [[

student

alloc

] initwithname:@"

電腦"andstuscore

:34.5

andstu***:@"

男"andstuage:20

]; student

*stu2 = [[

student

alloc

] initwithname:

@"滑鼠

"andstuscore:

34.7

andstu***:@"男

"andstuage:

21];

student

*stu3 = [[

student

alloc

] initwithname:

@"鍵盤

"andstuscore:

45.6

andstu***:

@"nan"

andstuage:

22];

student

*stu4 = [[

student

alloc

] initwithname:

@"顯示器

"andstuscore:

34.6

andstu***:@"男

"andstuage:

23];

nsarray *stuarray1 = [[nsarray

alloc]initwithobjects:stu1,stu2,stu3,stu4,nil];

nsarray *newarry = [stuarray1 sortedarrayusingcomparator:^nscomparisonresult(id obj1, id obj2) ];

nslog

(@"未排序前:");

for (student *stu in stuarray1)

nslog(@"

排序後");

for (student *stu in newarry)

return

0;這樣做會有幾方面的優點:1 支援多個漢字按字母序排序(若第乙個字的第乙個字母同樣。則按第乙個字的第二個字母比較,若第乙個字的字母全然同樣,按第二個字的首字母繼續排序)。2原本可能須要儲存漢字拼音的地方。如今不須要了。

3 能夠通過對nicknamesortde進一步定製。完畢更複雜的比較,比方先比較會員狀態,在按姓名字母序完畢比較。4總體結構簡單使用的都是cocatouch框架下的的方法。

Objective C 的語法與 Cocoa 框架

objective c 是蘋果 mac os x ios 平台的開發語言,objective c 基於 c 語言的,增加面向對 象的相關特性。你可以認為 objective c 就是另乙個版本的 c 也就是它採用了與 c 不同 的語法,但也實現了物件導向。nextstep 是乙個使用 objecti...

利用Dll實現通用密碼驗證框

密碼驗證框,對應用程式的使用者進行身份核對。如果能有乙個通用的 密碼驗證框,便能夠為我們的工作節約不少的時間,更能使我們編制的程式小而快。以下的程式為你提供了這樣的乙個 dll檔案。檔名為checkpasswordform.dpr 編譯此檔案生成checkpasswordform.dlllibrar...

利用WxPython 建立批量錄入框視窗

有個小專案,碰到需要批量建立輸入框的需求。研究了一下wxpython 實現了這個功能。coding utf 8 模組功能 顯示批量錄入框視窗。開發人員 seakingx 最後修改 2018.04.29 import wx class guiframe wx.frame self.max len in...