iOS Objective-C 数组分类与排序:基于年月日分组并排序
可以使用NSPredicate和NSSortDescriptor来对数组进行分类和排序。\n\n首先,根据年月日相同的条件,使用NSPredicate对数组进行分类。然后,使用NSSortDescriptor对新的数组进行排序。\n\n假设已经有一个名为dataArray的原始数组,其中的元素是DataModel对象。\n\nobjc\n// 分类\nNSArray *sortedArray = [dataArray sortedArrayUsingComparator:^NSComparisonResult(DataModel *obj1, DataModel *obj2) {\n if (obj1.year == obj2.year && obj1.month == obj2.month && obj1.day == obj2.day) {\n return NSOrderedSame;\n }\n return NSOrderedAscending;\n}];\n\nNSMutableArray *resultArray = [NSMutableArray array];\nNSMutableArray *tempArray = [NSMutableArray array];\nDataModel *previousModel = nil;\n\nfor (DataModel *model in sortedArray) {\n if (previousModel == nil || (model.year == previousModel.year && model.month == previousModel.month && model.day == previousModel.day)) {\n [tempArray addObject:model];\n } else {\n [resultArray addObject:[tempArray copy]];\n [tempArray removeAllObjects];\n [tempArray addObject:model];\n }\n previousModel = model;\n}\n\nif (tempArray.count > 0) {\n [resultArray addObject:[tempArray copy]];\n}\n\n// 排序\nNSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"@firstObject.year" ascending:NO];\n[resultArray sortUsingDescriptors:@[sortDescriptor]];\n\n\n这样,resultArray中的每个元素都是一个数组,其中包含了年月日相同的DataModel对象。并且,resultArray是按照年份降序排列的,即越大的年份放在越前面。
原文地址: https://www.cveoy.top/t/topic/qkkp 著作权归作者所有。请勿转载和采集!