iOS基础知识之排序
1.字符串比较
1 - (NSComparisonResult)compare:(NSString *)str;
例如:
1 NSString *str1 = @"zhangsan"; 2 NSString *str2 = @"susan"; 3 NSComparisonResult result = [str1 compare:str2];
2.数组的自定义排序
1 NSArray *arr = [NSArray array]; 2 [arr sortUsingSelector:@selector(自定义的比较方法)];
此处自定义的比较方法参照NSString中compare:方法进行设计。
例如设计一个Student类,其中包含name和age两个属性,若设计按照年龄进行比较的方法,则代码如下:
代码声明为:
1 - (NSComparisonResult)compareStudent:(Student *)s;
代码实现为:
1 - (NSComparisonResult)compareStudent:(Student *)s { 2 if(self.age > s.age){ 3 return NSOrderedDescending; 4 }else if(self.age < s.age) { 5 return NSOrderedAscending; 6 }else{ 7 return NSOrderedSame; 8 } 9 }
注意:上述方法的声明和实现全是在Student类中实现。
调用比较方法的代码为:
1 [arr sortUsingSelector:@selector(compareStudent:)];//arr中存放了n个student对象
3.多属性比较的数组排序
1 //描述器:第一个参数表示待比较的属性名称,第二个参数为YSE表示为升序,否则为降序 2 NSSortDescriptor *ageDes = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES]; 3 NSSortDescriptor *nameDes = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 4 [arr sortUsingDescriptors:@[ageDes,nameDes]];//表示先按照年龄排序,然后按照名字排序