iOS為對象數(shù)組排序

NSSortDescriptor可以根據(jù)數(shù)組中對象的屬性來排序
為排序數(shù)組的每個屬性創(chuàng)建NSSortDescriptor對象瞻讽,將所有這些對象放入一個數(shù)組中噩峦,該數(shù)組將會在后面用作參數(shù)骆膝。使用NSArray類的sortedArrayUsingDescripors:方法并將NSSortDescriptor對象數(shù)組作為參數(shù)傳遞過去缅阳,會返回一個排好序的數(shù)組

創(chuàng)建一個OS X 的Application含蓉,選擇Command Line Tool以政,語言為Objective-C

  1. 首先創(chuàng)建一個Person類用于排序
    Person.h
@interface Person : NSObject
@property (nonatomic, copy) NSString *firstName;
@property (nonatomic, copy) NSString *lastName;
@property (nonatomic, assign) NSInteger age;
-(instancetype)initWithFirstName:(NSString *)fName lastName:(NSString *)lName age:(NSInteger) age;
/**
 *  輸出狀態(tài)
 */
-(void)printState;
@end

Person.m

@implementation Person
-(instancetype)initWithFirstName:(NSString *)fName lastName:(NSString *)lName age:(NSInteger)age {
    self = [super init];
    if (self) {
        self.firstName = fName;
        self.lastName = lName;
        self.age = age;
    }
    return self;
}  
-(void)printState {
    NSLog(@"Name is %@ %@ is %ld years old",_firstName, _lastName, _age);
}
@end
  1. 在main.m中排序
#import "Person.h"
int main(int argc, const char * argv[]) {
    Person *p1 = [[Person alloc] initWithFirstName:@"Wenxuan" lastName:@"Huo" age:21];
    Person *p2 = [[Person alloc] initWithFirstName:@"MaHa" lastName:@"B" age:30];
    Person *p3 = [[Person alloc] initWithFirstName:@"MeKe" lastName:@"C" age:30];
    Person *p4 = [[Person alloc] initWithFirstName:@"MaLian" lastName:@"A" age:30];
    Person *p5 = [[Person alloc] initWithFirstName:@"HoHo" lastName:@"A" age:40];
    Person *p6 = [[Person alloc] initWithFirstName:@"Guo" lastName:@"Zhong" age:5000];

    // 包含所有Person的數(shù)組
    NSArray *peopleArray = @[p1, p2, p3, p4, p5, p6];

    // 為每個屬性創(chuàng)建NSSortDescriptor對象
    NSSortDescriptor * sdFirstName = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
    NSSortDescriptor * sdLastName = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES];
    NSSortDescriptor * sdAge = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

    // 設(shè)置排序優(yōu)先級鞭执,并組成數(shù)組司顿。這里優(yōu)先級最高為age,之后是firstName
    NSArray * sortedArray = [peopleArray sortedArrayUsingDescriptors:@[sdAge, sdLastName, sdFirstName]];
    // 為數(shù)組中每個元素執(zhí)行方法兄纺,輸出狀態(tài)
    [sortedArray makeObjectsPerformSelector:@selector(printState)];
     
    return 0;
}

輸出結(jié)果:

Name is Wenxuan Huo is 21 years old
Name is MaLian A is 30 years old
Name is MaHa B is 30 years old
Name is MeKe C is 30 years old
Name is HoHo A is 40 years old
Name is Guo Zhong is 5000 years old

下面測試另一種排序方式

    // 優(yōu)先級最高為firstName大溜,之后是age
    NSArray * sortedArray = [peopleArray sortedArrayUsingDescriptors:@[sdLastName, sdAge, sdFirstName]];
    [sortedArray makeObjectsPerformSelector:@selector(printState)];

輸出結(jié)果:

Name is MaLian A is 30 years old
Name is HoHo A is 40 years old
Name is MaHa B is 30 years old
Name is MeKe C is 30 years old
Name is Wenxuan Huo is 21 years old
Name is Guo Zhong is 5000 years old

Nice

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市估脆,隨后出現(xiàn)的幾起案子钦奋,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件付材,死亡現(xiàn)場離奇詭異朦拖,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)厌衔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門璧帝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人富寿,你說我怎么就攤上這事睬隶。” “怎么了页徐?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵理疙,是天一觀的道長。 經(jīng)常有香客問我泞坦,道長窖贤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任贰锁,我火速辦了婚禮赃梧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘豌熄。我一直安慰自己授嘀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布锣险。 她就那樣靜靜地躺著蹄皱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芯肤。 梳的紋絲不亂的頭發(fā)上巷折,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音崖咨,去河邊找鬼锻拘。 笑死,一個胖子當(dāng)著我的面吹牛击蹲,可吹牛的內(nèi)容都是我干的署拟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歌豺,長吁一口氣:“原來是場噩夢啊……” “哼推穷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起类咧,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤馒铃,失蹤者是張志新(化名)和其女友劉穎谴咸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骗露,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岭佳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了萧锉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片珊随。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柿隙,靈堂內(nèi)的尸體忽然破棺而出叶洞,到底是詐尸還是另有隱情,我是刑警寧澤禀崖,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布衩辟,位于F島的核電站,受9級特大地震影響波附,放射性物質(zhì)發(fā)生泄漏艺晴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一掸屡、第九天 我趴在偏房一處隱蔽的房頂上張望封寞。 院中可真熱鬧,春花似錦仅财、人聲如沸狈究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖锥。三九已至,卻和暖如春碎罚,著一層夾襖步出監(jiān)牢的瞬間磅废,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工魂莫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留还蹲,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓耙考,卻偏偏與公主長得像,于是被迫代替她去往敵國和親潭兽。 傳聞我的和親對象是個殘疾皇子倦始,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 古代的女子是三從四德鞋邑,琴棋書畫樣樣精通诵次,慢慢的變得女子無才便是德了!而到至今變成了女子無才便...
    分享者晨閱讀 477評論 0 1
  • 又是在浪費(fèi)一節(jié)課的時間吧枚碗! 老師在走廊打電話逾一,教室里沒一刻在安靜,我也抱著手機(jī)在發(fā)呆肮雨,窗外的人越發(fā)的多遵堵,我猛...
    嘿茜茜閱讀 238評論 0 1
  • 選擇要理性,面對要積極 不值得定律讓我們明白:智者怨规,應(yīng)理性地對待心里的那把尺子陌宿,在眾多選擇中,要認(rèn)清哪些事情是最重...
    寇廷聚閱讀 574評論 0 0
  • 小裴語:教皇(大祭司):你的愛你感覺到了嗎波丰?當(dāng)你靜坐的時候壳坪,有愛在心輪處緩慢悠然的升起嗎?當(dāng)你品嘗美味的時候掰烟,那甜...
    一閃_31de閱讀 407評論 0 0