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的定義(看教程不要太懶,自己敲**吧)
以下是排序的**:
//看下圖,其實呢,nssortdescriptor只是乙個獲取keypath的工具,他能根據keypath進行排序而已,僅此而已:)////
sort
////
////
//#import""
#import
"model.h
"@implementation
- (void
)sort];}
@end
看一下列印資訊:
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...