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 二维数组删除元素
- 下一篇:没有了
