NSSortDescriptor使用以及陣列排序

2021-07-11 21:03:01 字數 1603 閱讀 7275

nssortdescriptor 指定用於物件陣列排序的物件的屬性。(物件可能是字典,這種情況就是對字典陣列排序)

如果是employee物件需要按照name來排序,就生成下面的descriptor

nssortdescriptor *descriptor =[nssortdescriptor sortdescriptorwithkey:name ascending:yes];
如果需要多個排序,比如先按name排序,再按入職日期排序。那就建立兩個descriptor

nssortdescriptor *descriptor2 =[nssortdescriptor sortdescriptorwithkey:hiredate ascending:yes];
兩個descriptor放到陣列裡一起傳給需要排序的陣列。

nsarray *mydataarray = [nsarray arraywithobjects:..., nil];

nsarray *resultarray = [mydataarray sortedarrayusingdescriptors:@[descriptor, descriptor2]];

如果物件就是nsstring,就是字串陣列排序,那更簡單了,sortdescriptor的key直接指定為nil,就直接排序物件,而不是物件的某乙個屬性了。

nssortdescriptor *descriptor = [nssortdescriptor sortdescriptorwithkey:nil ascending:yes];

nsarray *descriptors = [nsarray arraywithobject:descriptor];

nsarray *mydataarray = [nsarray arraywithobjects:@"what", @"xero", @"highligth", @"mountain", @"victory", @"balance", nil];

nsarray *resultarray = [mydataarray sortedarrayusingdescriptors:descriptors];

nslog(@"%@", resultarray);

nsarray 使用sortedarrayusingdescriptors,返回排序好的陣列。

nsmutablearray可以直接使用sortusingdescriptors,對陣列本身排序。

使用comparator

nsmutablearray *arr = [nsmutablearray arraywithobjects:@"0",@"8",@"6",@"1",nil];

nsarray *sortedarray = [arr sortedarrayusingcomparator:^nscomparisonresult(id obj1, id obj2)else

if ([obj1 intvalue] < [obj2 intvalue]) else

}];nslog(@"排序後的陣列:%@",sortedarray);

CMFCColorButton的使用以及重繪

cmfccolorbutton是visual studio 2008 sp1版本以上提供的顏色採集器。系統環境 windows 7 程式設計環境 visual studio 2008 sp1 下面介紹下使用步驟 1.新建基於對話方塊的工程,名稱為mycolorbuttondemo 2.拖動乙個按鈕到...

UITableviewCell使用以及自定義高度

uitableview號稱是 ios裡面最難使用也是最複雜的乙個控制項?是不是暫且不說,反正我覺得httprequest也是挺複雜的。但確實被uitableview折磨了一段時間,還好搞定了一小半。一 如何重用uitableviewcell 重用的目的是為了減少記憶體消耗,假如有1千個cell,如果...

CocoaLumberjack使用以及日誌檔案獲取

本文主要介紹之前專案中使用到cocoalumberjack,然後獲取cocoalumberjack為我們儲存的日誌檔案,在使用者反饋的時候,將日誌檔案打包上傳到伺服器,以便我們查詢錯誤資訊。cocoalumberjack 和 xcodecolors 的安裝和使用 ios開源專案之日誌框架cocoal...