NSSortDescriptor 陣列排序

2021-06-27 12:46:31 字數 1785 閱讀 1431

如果陣列裡面的每乙個元素都是乙個個model,例如

departsdate.h檔案

[plain]view plain

copy

#import 

@inte***ce departsdate : nsobject  

@property (nonatomic, retain) nsdate *date;  

@property (nonatomic, assign) int    price;  

@end  

departsdate.m檔案

[plain]view plain

copy

#import "departsdate.h"  

@implementation departsdate  

@synthesize date, price;  

- (void)dealloc  

@end  

那麼對這個陣列排序就可以這樣

[plain]view plain

copy

nsmutablearray *array = [nsmutablearray array];  

......  

nssortdescriptor *sort = [nssortdescriptor sortdescriptorwithkey:@"date" ascending:yes];[array sortusingdescriptors:[nsarray arraywithobject:sort]];  

這是按照時間公升序排列。如果需要降序,那麼將yes改為no。

使用nssortdescriptor可以很方便的進行多條件排序,例如:同樣是上面的假設,首先按照**公升序排列;當**相同時,按照日期降序排列。

[plain]view plain

copy

nsmutablearray *array = [nsmutablearray array];  

......  

nssortdescriptor *sort1 = [nssortdescriptor sortdescriptorwithkey:@"price" ascending:yes];  

nssortdescriptor *sort2 = [nssortdescriptor sortdescriptorwithkey:@"date" ascending:no];  

[array sortusingdescriptors:[nsarray arraywithobjects:sort1, sort2, nil]];  

nssortdescriptor僅對nsset,nsarray,nsmutablearray可以排序,需要注意的是

nsset

- (nsarray *)sortedarrayusingdescriptors:(nsarray *)sortdescriptors;

這是對nsset排序,返回乙個nsarray。

nsarray

- (nsarray *)sortedarrayusingdescriptors:(nsarray *)sortdescriptors;

這是對nsarray排序,返回乙個新的nsarray,注意記憶體洩漏。

nsmutablearray

- (void)sortusingdescriptors:(nsarray *)sortdescriptors;

這是nsmutablearray排序,沒有返回值。

NSSortDescriptor 陣列排序

如果陣列裡面的每乙個元素都是乙個個model,例如 departsdate.h檔案 import inte ce departsdate nsobject property nonatomic,retain nsdate date property nonatomic,assign int pric...

NSSortDescriptor 陣列排序

如果陣列裡面的每乙個元素都是乙個個model,例如 departsdate.h檔案 plain view plain copy import inte ce departsdate nsobject property nonatomic,retain nsdate date property non...

NSSortDescriptor 陣列排序

如果陣列裡面的每乙個元素都是乙個個model,例如 departsdate.h檔案 plain view plain copy import inte ce departsdate nsobject property nonatomic,retain nsdate date property non...