在oc开发中,请求下来的数据大多数是无规则的,但是boss要求要排序并且加上索引,这样用户就可以在大量的数组中准确的定位到自己所要找的内容,然而很多初学者对oc中封装的类不是很了解,所以用大篇幅的代码来做判断,整理数组。
在这,给大家发一个小Demo,希望对大家有所帮助,同时,有错误的地方希望大大们批评指教。
#pragma mark-通过名称首字母给对象排序并分组。(这段代码可以直接复制粘贴进自己的工程)
-(NSMutableArray *)sortObjectsAccordingToInitialWith:(NSArray *)arr {
//初始化UILocalizedIndexedCollation
UILocalizedIndexedCollation *xlCollation = [UILocalizedIndexedCollation currentCollation];
//得出collation索引的数量
NSInteger xlTitlesCount = [[xlCollation sectionTitles]count];
//数组xlNewArray用来存放最终的数据
NSMutableArray *xlNewArray = [[NSMutableArray alloc]initWithCapacity:xlTitlesCount];
//初始化27个空数组加入newSectionsArray( 26个英文字母加一个#号)
for(NSInteger i = 0; i < xlTitlesCount; i++) {
NSMutableArray *array = [[NSMutableArray alloc]init];
[xlNewArray addObject:array];
}
//将每个名字分到某个section下(CarTypeModel是你创建的model)
for(CarTypeModel *Model in _carProductArray) {
//获取name属性的值所在的位置
NSInteger section = [xlCollation sectionForObject:Model collationStringSelector:@selector(name)];
//通过name把对应的Model放到对应的section中。
NSMutableArray *sectionNames = xlNewArray[section];
[sectionNames addObject:Model];
}
//对每个section中的数组按照name属性排序
for(NSInteger i =0; i < xlTitlesCount; i++) {
NSMutableArray *modelSection = xlNewArray[index];
NSArray *sortedArray = [xlCollation sortedArrayFromArray:modelSection collationStringSelector:@selector(name)];
xlNewArray[index] = sortedPersonArrayForSection;
}
return xlNewArray;
}
返回的结果就是通过名字首字母排序并分组过的数组。。。
网友评论