PS: 简单排序工具, 如有bug, 可留言, 或到
https://github.com/LQQZYY/LZSortTool提交, 最新的代码会上传到https://github.com/LQQZYY/LZSortTool, 可移步下载.如果您感觉不错,可以star一下, 谢谢!
LZSortTool是一个分组排序工具,对排序操作进行了简单的封装,只需将所需排序的内容放在数组传过去即可;
对外接口中,预留了两个方法,分别是对字符串内容进行排序,和对NSObject对象(一般是我们创建的数据模型model)进行排序
这里的参数都有说明,直接看注释即可;
另外LZSortResultType是设置返回的结果类型,这里我给了两种:
一种是不含排序后的索引的
排序的结果数组中含有的元素为数组,内含数组中的内容是分组后的元素
一种是含有排序后的索引的
排序的结果数组中含有的元素为字典,字典包含两个字段,分别对应索引和该索引的分组(数组)
当返回含有索引时,由于返回的结果数组中是字典,为便于取值,这里我将这两个字段的key值进行了预定义:
/** 返回的排序后的结果字典中,序号对应的key */ static NSString const * _Nonnull LZSortToolKey = @'LZSortToolKey'; /** 返回的排序后的结果字典中,value对应的key*/ static NSString const * _Nonnull LZSortToolValueKey = @'LZSortToolValueKey';在取值的时候,直接使用这个预定义的key即可;
NSArray *arr = [dic objectForKey:LZSortToolValueKey]集成手动添加手动添加非常简单,只需将文件夹LZSortClass拖到自己工程, 然后在需要的地方引入头文件:
cocoapods添加如果使用cocoapods管理, 可以在Podfile文件添加以下代码即可:
pod 'LZSortTool'使用引入头文件
#import 'LZSortTool.h'对字符串进行排序- (NSMutableArray *)nameArray { if (!_nameArray) { _nameArray = [[NSMutableArray alloc]initWithObjects:@'鲁迅',@'###',@'刘一',@'赵四',@'钱',@'李三',@'孙五',@'王二',@'黄蓉',@'孙悟空',@'哪吒',@'李天王',@'范冰冰',@'赵丽颖',@'霍建华',@'黄晓明',@'成龙',@'李连杰',@'李小龙',@'曾小贤',@'LiShan', nil]; } return _nameArray; } NSArray *arr = [LZSortTool sortStrings:self.nameArray withSortType:LZSortResultTypeSingleValue]; NSArray *arr1 = [LZSortTool sortStrings:self.nameArray withSortType:LZSortResultTypeDoubleValues];这样即可获取到分组排序的结果;
对NSObject进行排序首先,定义一个模型:
#import <Foundation/Foundation.h> @interface People : NSObject @property (nonatomic,copy)NSString *name; @property (nonatomic,assign)NSInteger age; @end创建数据源:
NSMutableArray *pArray = [NSMutableArray arrayWithCapacity:0]; for (NSString *str in self.nameArray) { People *p = [[People alloc]init]; p.name = str; p.age = arc4random()%90 + 10; [pArray addObject:p]; }排序:
NSArray *pArr = [LZSortTool sortObjcs:pArray byKey:@'name' withSortType:LZSortResultTypeDoubleValues];示例图字符串排序,直接查看控制台输出吧,这里只给出模型排序的截图: