NSArray中資料排序方法

2021-06-09 14:19:16 字數 1575 閱讀 3518

1函式介紹與例項

函式一:- (void)sortusingselector:(sel)comparator;

適用於陣列中的元素自帶比較函式時;

陣列排序函式,呼叫該函式的物件為陣列,comparator是呼叫該函式的陣列中的元素的方法。函式引數型別為陣列中的元素型別或者id型別,在呼叫時不需要傳遞引數,排序過程不可見,該函式執行時:迴圈取出各個元素,進行比較,然後放到合適的位置

使用例項:

將陣列中的元素按照字串大小排序:

nsmutablearray*array = [[nsmutablearray alloc] initwithobjects:@"white",@"blue",@"red",@"black",nil];

[arraysortusingselector:@selector(compare:)];

nslog(@"sorted array:%@",array);

執行結果是:sorted array:

(black,

blue,

red,

white

)解釋:在呼叫sortusingselector()方法時,我們指定使用compare:方法來進行比較。它內部可能使用了型別來進行判斷,因為比較的型別是nsstring,所以會呼叫nsstring 的compare:方法。排序的過程是不可見的,但是過程就是:取出各個元素,使用compare:比較,然後放到合適的位置。對於compare:函式則在nsstring類的擴充套件(category)已經定義號了。系統已經知道如何判定a 字串和b字串誰比較大,對於自己定義好的類中,需要自己定義compare方法,並指定乙個排序引數(比如我們定義乙個sudent的型別,然後規定排序的時候按照id來排。

函式二-(void)sortusingfunction:(nsinteger (*)(id, id, void *))compare ontext:(void*)context;

陣列中元素不帶比較函式時,建議使用。

使用方法:只需要在呼叫比較函式的類中定義比較函式如下:

nsinteger sortobjectsbypatientid(id obj1, id obj2,void *context)

然後呼叫比較函式:

[listdataarraysortusingfunction:sortobjectsbypatientname context:null];

函式三:- (void)sortusingselector:(sel)comparator;函式。

利用該函式,需要在陣列中的元素具有比較方法。

首先定義元素類,在其中實現比較方法:

類定義@inte***ce study : nsobject

- (nscomparisonresult)compareid:(study*)dic;

@end;

類實現@implementation study

- (nscomparisonresult)compareid:(study*)dic

@end;

在其他類中呼叫排序方法:

@inte***ce sorttest: nsobject

-(void)sort

NSArray方法 排序

nsarray用來儲存物件的有序列表,可以放入任何型別的物件,但它有兩個限制 首先,它只能儲存oc的物件,不能儲存c中的基本資料型別,如 int float enum struct 和隨機指標 其次不能在nsarray中儲存nil。建立陣列 nsarray array1 一年級 二年級 三年級 四年...

NSArray排序方法講解

nsarray排序方法講解 給陣列排序有著多種方式 最麻煩的是sortedarrayusingselector 其次是sortedarrayusingdescriptors 最容易使用的就是sortedarrayusingcomparator 從最容易使用的開始吧 原始陣列 nsarray arra...

NSArray中的資料進行排序

nsarray中的資料排序,經常是利用nssortdescriptor。組裝資料 array nsmutablearray alloc initwithcapacity 11 nsmutabledictionary dir6 nsmutabledictionary alloc initwithcap...