iOS 开发 排序问题 (好友列表,按字母排序)
2016-07-28 15:30
489 查看
iOS 开发 排序问题 (好友列表,按字母排序)
一、预备工作
①好友数据模型展示
FriendModel
我们用userName的首字母排序;
② 存放model的数组 dataSource
③存放所有首字母的数组 lettersArray
④存放首字母对应字典, nameDic 字典中内容为该字母下的model数组
二、 下面是排序方法
三、用法
做tableView时,用letterArray确定分组数,取出key,用key从nameDic中取出该组的model。
一、预备工作
①好友数据模型展示
FriendModel
@property(nonatomic,copy)NSString *photo; @property(nonatomic,copy)NSString *userName; @property(nonatomic,copy)NSString *userId; @property(nonatomic,copy)NSString *phoneNO;
我们用userName的首字母排序;
② 存放model的数组 dataSource
③存放所有首字母的数组 lettersArray
④存放首字母对应字典, nameDic 字典中内容为该字母下的model数组
二、 下面是排序方法
- (void)handleLettersArray { NSMutableDictionary *tempDic = [[NSMutableDictionary alloc]init]; for(FriendModel *friends in dataSource)//①、② { HanyuPinyinOutputFormat *formatter = [[HanyuPinyinOutputFormat alloc] init]; formatter.caseType = CaseTypeLowercase; formatter.vCharType = VCharTypeWithV; formatter.toneType = ToneTypeWithoutTone; NSString *outputPinyin=[PinyinHelper toHanyuPinyinStringWithNSString:friends.userName withHanyuPinyinOutputFormat:formatter withNSString:@""]; NSLog(@"%@",[[outputPinyin substringToIndex:1] uppercaseString]); [tempDic setObject:friends forKey:[[outputPinyin substringToIndex:1] uppercaseString]]; } self.lettersArray = tempDic.allKeys;//③ for (NSString *letter in self.lettersArray) { NSLog(@"letter==%@",letter); NSMutableArray *tempArry = [[NSMutableArray alloc] init]; for (NSInteger i = 0; i<dataSource.count; i++) { FriendModel *friends = dataSource[i]; NSLog(@"name = %@",friends.userName); HanyuPinyinOutputFormat *formatter = [[HanyuPinyinOutputFormat alloc] init]; formatter.caseType = CaseTypeUppercase; formatter.vCharType = VCharTypeWithV; formatter.toneType = ToneTypeWithoutTone; NSString *outputPinyin=[PinyinHelper toHanyuPinyinStringWithNSString:friends.userName withHanyuPinyinOutputFormat:formatter withNSString:@""]; NSLog(@"%@",[[outputPinyin substringToIndex:1] uppercaseString]); if ([letter isEqualToString:[[outputPinyin substringToIndex:1] uppercaseString]]) { [tempArry addObject:friends]; } } [self.nameDic setObject:tempArry forKey:letter];// ④ // NSLog(@"tempArry==%@",tempArry); } self.lettersArray = tempDic.allKeys; // NSLog(@"%@",self.lettersArray); NSComparator cmptr = ^(id obj1, id obj2){ if ([obj1 characterAtIndex:0] > [obj2 characterAtIndex:0]) { return (NSComparisonResult)NSOrderedDescending; } if ([obj1 characterAtIndex:0] < [obj2 characterAtIndex:0]) { return (NSComparisonResult)NSOrderedAscending; } return (NSComparisonResult)NSOrderedSame; }; self.lettersArray = [[NSMutableArray alloc]initWithArray:[self.lettersArray sortedArrayUsingComparator:cmptr]]; NSLog(@"%@",self.lettersArray); }
三、用法
做tableView时,用letterArray确定分组数,取出key,用key从nameDic中取出该组的model。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 在命令行用 sort 进行排序
- 我是运营,我没有假期
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 许多数据中心的工作者很满意他们的工作,将鼓励他们的孩子继续从事这份工作
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 零编程经验的我是如何找到工作的
- 文件遍历排序函数
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- 关于C#中排序函数的总结
- C#选择排序法实例分析
- 修复mysql数据库
- C#插入法排序算法实例分析