iOS根据日期、数值给model排序
来源:互联网 发布:手机淘宝怎么查看淘龄 编辑:程序博客网 时间:2024/05/16 07:09
单纯的根据字符串、数字排序很简单;但是更多的使用场景是 ---- 根据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;//相等 } }];
0 0
- iOS根据日期、数值给model排序
- iOS给Model排序
- iOS根据model里面的时间字段进行排序
- iOS-model(自定义)排序
- list集合根据某一字段数值排序
- Mysql根据in里面的数值排序
- iOS 根据时间排序
- IOS日期排序
- 根据后台返回的日期排序数据
- iOS 根据模型节点排序
- Android 根据首字母给城市排序
- map排序,根据key给map排序,根据value给map排序
- Grails GSP页面如何根据Model类排序
- 通讯录:将数组中的model根据名字排序
- iOS 根据日期判断星座源代码
- iOS 根据日期判断星座源代码
- iOS中根据日期就算周几
- iOS根据当前日期计算星期几
- Eclipse 出现的问题总结
- NPOI使用手册
- java 对redis 的基本操作
- Linux下使用popen()执行shell命令
- warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the cu
- iOS根据日期、数值给model排序
- JAVA虚拟机之二:Java体系结构
- Android adb 命令
- 反射应用之用类加载器的方式管理资源和配置文件
- 关联更新表数据
- 关于JAVA取本机ip的一些传说
- ArcGIS Javascript学习笔记(三) Dojo
- 用python进行科学统计及数据挖掘--便捷工具环境搭建
- arm neon 优化原理