iOS根据日期、数值给model排序
单纯的根据字符串、数字排序很简单;但是更多的使用场景是 ---- 根据model中的某个属性,对模型数组进行排序。
今天我来写个简单的Demo 介绍根据数值、日期,对model进行排序。
这里使用的主要方法是:sortedArrayUsingComparator
iOS模型数组Demo下载地址
Demo 比较简单,效果如下:
下面来看代码:
1、对数据和view进行初始化,这里使用三个按钮和一个tableView,以及一个模型,及模型的各项属性;在此贴简要代码
#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic,copy) NSString *name; @property (nonatomic,assign) int age; @property (nonatomic,copy) NSString *ID; @property (nonatomic,copy) NSString *entryDate; @end
Person *per3 = [[Person alloc] init]; per3.name = @"D"; per3.age = 28; per3.ID = @"016"; per3.entryDate = @"2019-08-10 08:30"; [self.dataArray addObject:per3]; self.resultArray = [self.dataArray mutableCopy];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (!cell) { cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"]; } Person *pModel = self.resultArray[indexPath.row]; cell.textLabel.text = [NSString stringWithFormat:@"名:%@ Age:%d",pModel.name,pModel.age]; cell.detailTextLabel.text = [NSString stringWithFormat:@"ID:%@ Date:%@",pModel.ID,pModel.entryDate]; cell.textLabel.font = [UIFont systemFontOfSize:12]; cell.detailTextLabel.font = [UIFont systemFontOfSize:12]; return cell; }
2、根据名字(字符串)进行排序。
NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { Person *pModel1 = obj1; Person *pModel2 = obj2; NSLog(@"type00 -- %ld",(long)tag); if (pModel1.name > pModel2.name) { //不使用intValue比较无效 return NSOrderedDescending;//降序 }else if (pModel1.name < pModel2.name){ return NSOrderedAscending;//升序 }else { return NSOrderedSame;//相等 } }];
3、根据年龄(数值)对数组进行排序
NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { Person *pModel1 = obj1; Person *pModel2 = obj2; //按照年龄排序 if (pModel1.age > pModel2.age) { //不使用intValue比较无效 return NSOrderedDescending;//降序 }else if (pModel1.age < pModel2.age){ return NSOrderedAscending;//升序 }else { return NSOrderedSame;//相等 } }];
4、根据入职时间进行排序
NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { Person *pModel1 = obj1; Person *pModel2 = obj2; //入职时间 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat: @"yyyy-MM-dd HH:mm"]; NSDate *date1= [dateFormatter dateFromString:pModel1.entryDate]; NSDate *date2= [dateFormatter dateFromString:pModel2.entryDate]; if (date1 == [date1 earlierDate: date2]) { //不使用intValue比较无效 return NSOrderedDescending;//降序 }else if (date1 == [date1 laterDate: date2]) { return NSOrderedAscending;//升序 }else{ return NSOrderedSame;//相等 } }];
5、根据编号进行排序,编号需要转化成为数值,使用intValue
NSArray *sortArray = [self.dataArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { Person *pModel1 = obj1; Person *pModel2 = obj2; if (tag == 1) {//按照ID排序 if (pModel1.ID.intValue > pModel2.ID.intValue) { //不使用intValue比较无效 return NSOrderedDescending;//降序 }else if (pModel1.ID.intValue < pModel2.ID.intValue) { return NSOrderedAscending;//升序 }else { return NSOrderedSame;//相等 } }];
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: iOS 二维数组删除元素
- 下一篇:没有了