日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NSArray 与 NSMutableArray 的排序

發(fā)布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NSArray 与 NSMutableArray 的排序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  由于集合的使用過程中,經(jīng)常需要對數(shù)組進行排序操作,此博客用于總結(jié)對在OC中對數(shù)組排序的幾種方法

1.當數(shù)組中存放的是Foundation框架中提供的對象時,直接使用 compare:方法

? 如:NSString、NSMutableSting等

 

1 //使用塊對數(shù)組排序 2 NSArray* arr = @[@"4",@"3",@"1",@"2"]; 3 NSMutableArray* mutArr = [arr mutableCopy]; 4 5 //可變數(shù)組使用塊 sortUsingComparator 6 [mutArr sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 7 return [obj1 compare: obj2]; 8 }]; 9 //不可變數(shù)組使用Comparator排序 10 NSArray* sorted = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { 11 return [obj2 compare: obj1]; 12 }]; 13 14 NSLog(@"%@", sorted); 15 NSLog(@"%@", mutArr); 16 17 //使用塊對數(shù)組進行排序 18 //可變數(shù)組使用selector排序 19 NSLog(@"%@", [arr sortedArrayUsingSelector:@selector(compare:)]);

2. 當數(shù)組中存放的是自定義對象時,需要自己寫排序方法,或使用NSSortDescriptor進行排序

舉個例子,自定義一個Student類,生成很多Student對象,放入數(shù)組中,對數(shù)組進行排序。

? ?2.1 Student類

1 #import <Foundation/Foundation.h> 2 @class Grade; 3 @interface Student : NSObject 4 @property (copy, nonatomic) NSString* name; 5 @property (assign, nonatomic) NSInteger age; 6 @property (copy, nonatomic) NSString* stuNo; 7 @property (strong, nonatomic) Grade* grade; 8 - (NSComparisonResult)compare:(Student *)stu; 9 10 - (NSString *)description; 11 12 @end 13 14 @implementation Student 15 - (NSComparisonResult)compare:(Student *)stu 16 { 17 return [_name compare: [stu name]]; 18 } 19 - (NSString *)description 20 { 21 return [NSString stringWithFormat:@"%@", _name]; 22 } 23 @end

?2.2 排序 (使用自定義方法)

1 //對自定義對象進行排序 2 Grade* grade1 = [[Grade alloc] init]; 3 grade1.name = @"1023"; 4 Grade* grade2 = [[Grade alloc] init]; 5 grade2.name = @"1024"; 6 7 Student* stu1 = [[Student alloc] init]; 8 stu1.name = @"悟空"; 9 stu1.stuNo = @"008"; 10 stu1.age = 10; 11 stu1.grade = grade1; 12 Student* stu2 = [[Student alloc] init]; 13 stu2.name = @"八戒"; 14 stu2.stuNo = @"007"; 15 stu2.age = 12; 16 stu2.grade = grade2; 17 Student* stu3 = [[Student alloc] init]; 18 stu3.name = @"唐僧"; 19 stu3.stuNo = @"009"; 20 stu3.age = 14; 21 stu3.grade = grade2; 22 Student* stu4 = [[Student alloc] init]; 23 stu4.name = @"玉帝"; 24 stu4.stuNo = @"011"; 25 stu4.age = 16; 26 stu4.grade = grade1; 27 Student* stu5 = [[Student alloc] init]; 28 stu5.name = @"觀音"; 29 stu5.stuNo = @"112"; 30 stu5.age = 14; 31 stu5.grade = grade1; 32 33 NSArray* students = @[stu1, stu2, stu3, stu4,stu5]; 34 //對自定義對象排序需要自定義排序方法 35 NSArray* orderedArr = [students sortedArrayUsingSelector:@selector(compare:)]; 36 // NSLog(@"%@", orderedArr); 37 for (Student *new in orderedArr) { 38 NSLog(@"%@", new.name); 39 }

?3.使用NSSortDescriptor進行排序,NSSortDescriptor排序更多的用于多條件排序

  使用步驟:

  1>創(chuàng)建NSSortDescriptor對象

1      //使用NSSortDescriptor對象描述某一條屬性的比較規(guī)則 2 //第一個參數(shù),是要比較的屬性所對應(yīng)的成員變量的名字 3 //第二個參數(shù),指定為YES, 表示為升序,指定為NO,表示為降序 4 5 NSSortDescriptor* desc1 = [[NSSortDescriptor alloc] initWithKey:@"_stuNo" ascending:YES]; 6 NSSortDescriptor* desc2 = [[NSSortDescriptor alloc] initWithKey:@"_age" ascending:YES]; 7 NSSortDescriptor* desc3 = [[NSSortDescriptor alloc] initWithKey:@"_name" ascending:YES]; 8 //【注】NSSortDescriptor 支持路徑,_grade為student對象的屬性對象,name為_grade的屬性 9 NSSortDescriptor* desc4 = [[NSSortDescriptor alloc] initWithKey:@"_grade.name" ascending:YES];

?

  2>將NSSortDescriptor對象放入數(shù)組

1 NSArray* descArr = [NSArray arrayWithObjects: desc4,desc1, desc3, desc2, nil];

  3>需要排序的數(shù)組調(diào)用 ?sortedArrayUsingDescriptors:方法進行排序

1 NSArray* sortedByDescriptor = [students sortedArrayUsingDescriptors: descArr];

  實例代碼如下:

  Student.h文件

1 #import <Foundation/Foundation.h> 2 @class Grade; 3 @interface Student : NSObject 4 @property (copy, nonatomic) NSString* name; 5 @property (assign, nonatomic) NSInteger age; 6 @property (copy, nonatomic) NSString* stuNo; 7 @property (strong, nonatomic) Grade* grade; 8 - (NSComparisonResult)compare:(Student *)stu; 9 10 - (NSString *)description; 11 12 @end

  Student.m文件

1 #import "Student.h" 2 3 @implementation Student 4 - (NSComparisonResult)compare:(Student *)stu 5 { 6 return [_name compare: [stu name]]; 7 } 8 - (NSString *)description 9 { 10 return [NSString stringWithFormat:@"%@", _name]; 11 } 12 @end

  Grade.h文件

1 #import <Foundation/Foundation.h> 2 3 @interface Grade : NSObject 4 @property (copy, nonatomic) NSString* name; 5 @end

  Grade.m文件

  

1 #import "Grade.h" 2 3 @implementation Grade 4 5 @end

  主函數(shù):

1 //對自定義對象進行排序 2 Grade* grade1 = [[Grade alloc] init]; 3 grade1.name = @"1023"; 4 Grade* grade2 = [[Grade alloc] init]; 5 grade2.name = @"1024"; 6 7 Student* stu1 = [[Student alloc] init]; 8 stu1.name = @"悟空"; 9 stu1.stuNo = @"008"; 10 stu1.age = 10; 11 stu1.grade = grade1; 12 Student* stu2 = [[Student alloc] init]; 13 stu2.name = @"八戒"; 14 stu2.stuNo = @"007"; 15 stu2.age = 12; 16 stu2.grade = grade2; 17 Student* stu3 = [[Student alloc] init]; 18 stu3.name = @"唐僧"; 19 stu3.stuNo = @"009"; 20 stu3.age = 14; 21 stu3.grade = grade2; 22 Student* stu4 = [[Student alloc] init]; 23 stu4.name = @"玉帝"; 24 stu4.stuNo = @"011"; 25 stu4.age = 16; 26 stu4.grade = grade1; 27 Student* stu5 = [[Student alloc] init]; 28 stu5.name = @"觀音"; 29 stu5.stuNo = @"112"; 30 stu5.age = 14; 31 stu5.grade = grade1; 32 33 NSArray* students = @[stu1, stu2, stu3, stu4,stu5]; 34 35 NSSortDescriptor* desc1 = [[NSSortDescriptor alloc] initWithKey:@"_stuNo" ascending:YES]; 36 NSSortDescriptor* desc2 = [[NSSortDescriptor alloc] initWithKey:@"_age" ascending:YES]; 37 NSSortDescriptor* desc3 = [[NSSortDescriptor alloc] initWithKey:@"_name" ascending:YES]; 38 //可向下傳遞 39 NSSortDescriptor* desc4 = [[NSSortDescriptor alloc] initWithKey:@"_grade.name" ascending:YES]; 40 NSArray* descArr = [NSArray arrayWithObjects: desc4,desc1, desc3, desc2, nil]; 41 // NSArray* descArr = [NSArray arrayWithObjects:desc4, nil]; 42 NSArray* sortedByDescriptor = [students sortedArrayUsingDescriptors: descArr]; 43 44 for (Student *new in sortedByDescriptor) { 45 NSLog(@"%@", new.grade.name); 46 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/pretty-guy/p/3996374.html

總結(jié)

以上是生活随笔為你收集整理的NSArray 与 NSMutableArray 的排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av无线看 | 一级片一级 | 亚洲精品日韩av | 伊人网视频 | 青青草视频 | 小辣椒福利视频导航 | 精品欧美一区二区三区 | 日韩av成人在线观看 | 荒岛淫众女h文小说 | 亚洲av无码一区二区三区性色 | 天天想你免费观看完整版高清电影 | 日韩精品免费电影 | 日韩欧美大陆 | 高清一二三区 | 免费毛片在线播放 | 久久久精彩视频 | 嫩草视频在线观看 | 久久泄欲网 | 国内偷拍一区二区 | 国产精品白嫩白嫩大学美女 | 99国产精品久久久久久久成人 | 性饥渴的农村熟妇 | 久久久久久久久精 | 日韩丝袜一区 | 欧美一区日韩一区 | 超碰av男人的天堂 | 视频在线亚洲 | 在线观看视频毛片 | 91吃瓜在线 | 韩国主播青草200vip视频 | 97视频一区二区 | 亚洲综合成人在线 | 欧美色图亚洲视频 | 亚洲婷婷在线观看 | 久久免费看毛片 | 久久免费公开视频 | 91成人短视频在线观看 | 最新中文字幕在线观看视频 | 精品午夜一区二区三区 | 激情专区| 超碰p| 91禁蘑菇在线看 | 国产一区视频在线免费观看 | 欧美精品久久久久久久久久 | 亚洲综合av网 | 91福利社在线观看 | 日本高清视频一区二区 | 国产精品视频专区 | 强行挺进白丝老师里呻吟 | 久草国产在线观看 | 国产综合在线视频 | 久久久精品人妻一区二区三区色秀 | 欧美美女性生活视频 | 黄色一级片免费 | 欧美日韩视频在线观看免费 | 一区二区 亚洲 | 免费无码毛片一区二三区 | 污视频网站免费在线观看 | 精品一区中文字幕 | 国产一级二级在线 | 女人性做爰100部免费 | aaa午夜| 妺妺窝人体色www聚色窝仙踪 | 一级黄片毛片 | 人妻偷人精品一区二区三区 | 日本免费a视频 | 国产欧美日韩综合精品一区二区三区 | 正在播放国产一区 | 亚洲五月婷婷 | 婷婷六月在线 | 青青草av | 潘金莲一级淫片aaaaaaa | 亚洲不卡电影 | 国产乱妇乱子 | 屁股夹体温计调教play | 亚洲国产成人一区二区精品区 | 麻豆免费网站 | 青青操视频在线 | 北岛玲在线 | 五月天av影院 | 姑娘第5集在线观看免费好剧 | 久久国产一区 | 欧美激情偷拍 | 欧美激情免费视频 | 超碰影院在线 | 一区二区黄色片 | 温柔女教师在线观看 | youjizz国产精品 | 国产一区二区在线免费观看视频 | 中文字幕精品一区 | 亚洲国产日韩欧美在线观看 | 免费的av在线| 亚洲二区在线播放视频 | 国产综合图区 | 国产高清精品一区二区三区 | 成人动漫在线观看 | 精品人妻无码中文字幕18禁 | av中文一区 | 国产日韩精品一区二区三区在线 |