iOS 数组排序:对包含模型的数组进行排序
要对 iOS 数组中的模型进行排序,可以使用sortedArrayUsingComparator:方法,通过比较模型中的年、月、日和时间来进行排序。
假设数组名为modelArray,模型类名为Model,可以按照以下步骤进行排序:
- 导入模型类的头文件。
#import "Model.h"
- 使用
sortedArrayUsingComparator:方法对数组进行排序,传入一个比较器(Comparator)。
NSArray *sortedArray = [modelArray sortedArrayUsingComparator:^NSComparisonResult(Model *obj1, Model *obj2) {
// 根据需要比较年、月、日和时间
if (obj1.year < obj2.year) {
return NSOrderedAscending;
} else if (obj1.year > obj2.year) {
return NSOrderedDescending;
} else {
if (obj1.month < obj2.month) {
return NSOrderedAscending;
} else if (obj1.month > obj2.month) {
return NSOrderedDescending;
} else {
if (obj1.day < obj2.day) {
return NSOrderedAscending;
} else if (obj1.day > obj2.day) {
return NSOrderedDescending;
} else {
// 比较时间
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = "HH:mm:ss";
NSDate *date1 = [dateFormatter dateFromString:obj1.timer];
NSDate *date2 = [dateFormatter dateFromString:obj2.timer];
return [date1 compare:date2];
}
}
}
}];
- 排序后的结果存储在
sortedArray中,可以在控制台打印排序后的结果进行验证。
for (Model *model in sortedArray) {
NSLog(@"年:%ld 月:%ld 日:%ld 时间:%@", model.year, model.month, model.day, model.timer);
}
请注意,以上示例代码假设模型类中的属性为NSInteger类型,如果是NSNumber类型的属性,请使用obj1.year.integerValue和obj2.year.integerValue进行比较。此外,时间的比较需要将字符串转换为NSDate对象,再使用compare:方法进行比较。
原文地址: https://www.cveoy.top/t/topic/oDKC 著作权归作者所有。请勿转载和采集!