iOS 开发 排序问题 (好友列表,按字母排序)
来源:互联网 发布:flash文字特效软件 编辑:程序博客网 时间:2024/04/30 07:40
iOS 开发 排序问题 (好友列表,按字母排序)
一、预备工作
①好友数据模型展示
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。
0 0
- iOS 开发 排序问题 (好友列表,按字母排序)
- IOS开发搜索和排序(好友列表 通讯录的实现 searchbar)
- 自定义listView,仿微信好友列表,右侧带字母排序。
- 好友列表排序,分组
- 按字母排序问题
- 将好友列表按拼音排序
- 将好友列表按拼音排序
- 解决收藏夹收藏列表按字母排序问题
- iOS 名字按字母排序
- iOS索引,按字母排序
- XMPPFramework iOS开发(六)好友列表
- IOS开发中联系人字母排序
- JavaScript:按字母排序列表的元素
- 将列表按字母排序如通讯录
- ASP(FOR)实现字母排序列表
- 联系人列表字母排序索引(一)
- 联系人列表字母排序索引(二)
- 联系人列表字母排序索引(三)
- lintcode:直方图最大矩形覆盖
- 关于cordova开发中安卓定位不精确的解决方案
- MySql优化
- [从头学数学] 第251节 Python实现数据结构:二叉查找树
- position属性:absolute与relative的区别
- iOS 开发 排序问题 (好友列表,按字母排序)
- Uva 1588 - Kickdown
- 阿里笔试题-自己尝试做的答案
- bzoj1051 受欢迎的牛 tarjan
- C语言学习——数据类型杂记
- 复杂声明的例题解析
- hive 脚本接受参数
- web项目中相对路径的问题
- binary search二分检索(查找)