UI界面是按照A-Z布局的tableView,但是取到的数据是一个没有排序的数组,我们要对它重新排序。
1.工程里添加第三方类,pinyin.c与pinyin.h。网上有很多下载。
2.导入头文件pinyin.h
3.代码如下方法(传入一个NSArray,返回一个A-Z排序的NSDictionary):
/**
* 一个数组里面是字典按照字典里name字段值进行A-Z排序
*
* @param placeArray 地点数组
*
* @return 地点排序字典
*/
+ (NSDictionary *)placeSortingWithPlaceArray:(NSArray *)placeArray
{
NSMutableDictionary *sectionDic = [[NSMutableDictionary alloc] initWithCapacity:100];
for (int i = 0; i < 26; i++)
{
[sectionDic setObject:[NSMutableArray array] forKey:[NSString stringWithFormat:@"%c",'A'+i]];
}
[sectionDic setObject:[NSMutableArray array] forKey:[NSString stringWithFormat:@"%c",'#']];
for (NSDictionary *placeInfoDic in placeArray) {
char first= pinyinFirstLetter([placeInfoDic[@"name"] characterAtIndex:0]);
NSString *sectionName;
if ((first>='a'&&first<='z')||(first>='A'&&first<='Z')) {
sectionName = [[NSString stringWithFormat:@"%c",pinyinFirstLetter([placeInfoDic[@"name"] characterAtIndex:0])] uppercaseString];
}else {
sectionName=[[NSString stringWithFormat:@"%c",'#'] uppercaseString];
}
[[sectionDic objectForKey:sectionName] addObject:placeInfoDic];
}
//去除空的数组
NSArray *allKeys = [[sectionDic allKeys] sortedArrayUsingSelector:@selector(compare:)];
for (int i = 0; i< allKeys.count; i++) {
NSString *key = [allKeys objectAtIndex:i];
NSArray *value = [sectionDic valueForKey:key];
if (value.count == 0) {
[sectionDic removeObjectForKey:key];
}
}
//NSLog(@"%@",sectionDic);
return sectionDic;
}