NSArray排序方法講解

2021-09-06 16:36:36 字數 2848 閱讀 7956

nsarray排序方法講解

給陣列排序有著多種方式

最麻煩的是sortedarrayusingselector:

,其次是sortedarrayusingdescriptors:

,最容易使用的就是sortedarrayusingcomparator:

從最容易使用的開始吧:

//

原始陣列

nsarray *array = @[@"

b", @"

a", @"

x", @"

o", @"

g", @"o"

];

//排序陣列

nsarray *sort = [array sortedarrayusingcomparator:^nscomparisonresult(id obj1, id

obj2) ];

//列印排序陣列

[sort enumerateobjectsusingblock:^(id obj, nsuinteger idx, bool *stop) ];

這麼一行就解決了,實在是太容易了.

要對什麼物件排序就用相應的物件接收就行了:)

是不是簡單過頭了呢.

請記住,用block排序是最簡單的方式!

下面來試試sortedarrayusingdescriptors:

這個方法.

sortedarrayusingdescriptors:

一般用來給model進行排序,block也能對model進行排序.先給出model的定義(看教程不要太懶,自己敲**吧)

以下是排序的**:

//

////

sort

////

////

//#import""

#import

"model.h

"@implementation

- (void

)sort];}

@end

看下圖,其實呢,nssortdescriptor只是乙個獲取keypath的工具,他能根據keypath進行排序而已,僅此而已:)

看一下列印資訊:

2014-07-01 09:09:43.563 sort[86442:60b] gaofushuai

2014-07-01 09:09:43.565 sort[86442:60b] haoqushi

2014-07-01 09:09:43.565 sort[86442:60b] jungang

2014-07-01 09:09:43.566 sort[86442:60b] kongming

2014-07-01 09:09:43.566 sort[86442:60b] xiaoqiu

2014-07-01 09:09:43.567 sort[86442:60b] youxianming

很easy吧.

這種東西還是封裝成類目比較好的樣子.

使用:

//

////

sort

////

////

//#import""

#import

"model.h

"#import

"nsarray+yxsort.h

"@implementation

- (void

)sort];}

@end

一句話就能實現排序,多簡單:),開發就得隱藏不必要的繁文縟節,減少不必要的干擾才是正道.

第三種方法sortedarrayusingselector:

,也許是你最常用的方法,這個我就不講了,我覺得太麻煩了,還得另外寫乙個比較的方法......

總結:==本人傾向於這麼用==

1. 優先用block排序

2. 用nssortdescriptor的keypath排序

3. 再不濟請用sortedarrayusingselector:

方法排序

附錄:用block對model排序一樣非常簡單直白暴力,只需用model接收物件就可以了.

NSArray方法 排序

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

NSArray中資料排序方法

1函式介紹與例項 函式一 void sortusingselector sel comparator 適用於陣列中的元素自帶比較函式時 陣列排序函式,呼叫該函式的物件為陣列,comparator是呼叫該函式的陣列中的元素的方法。函式引數型別為陣列中的元素型別或者id型別,在呼叫時不需要傳遞引數,排序...

NSArray 陣列排序

方法1,使用自帶的比較器 compare是陣列自帶的比較方法 nsarray array nsarrayarraywithobjects 3 1 2 nil nsarray array2 array sortedarrayusingselector selector compare nslog ar...