苹果X如何设置苹果通讯录拼音顺序格

&nbsp>&nbsp
&nbsp>&nbsp
ios教程 &nbsp>&nbsp
简单实现iOS通讯录拼音分组排序
摘要:在实现好友列表或通讯录功能时,我们大多需要对名字进行拼音排序及分组,后来在网上发现了YUChineseSorting已经实现了基本的字符串排序算法。但是它只能对字符串数组进行分组排序,并且还需要加入.cpp文件,使用比较麻烦。于是我在原来基础上对代码进行封装,支持了对对象数组按对象的某个属性进行排序。并对原来的代码进行了合并和封装,比原来使用更方便。原理在ObjectiveC语言中,字符串是以unicode进行编码的。在unicode字符集中,汉字的编码范围为4E00(16进
在实现好友列表或通讯录功能时,我们大多需要对名字进行拼音排序及分组,后来在网上发现了YUChineseSorting已经实现了基本的字符串排序算法。但是它只能对字符串数组进行分组排序,并且还需要加入.cpp文件,使用比较麻烦。于是我在原来基础上对代码进行封装,支持了对对象数组按对象的某个属性进行排序。并对原来的代码进行了合并和封装,比原来使用更方便。
在Objective C语言中,字符串是以unicode进行编码的。在unicode字符集中,汉字的编码范围为4E00(16进制) 到 9FA5(16进制) 之间(即从第19968开始的20902个字符是中文简体字符)。YUChineseSorting把这些字符的拼音首字母按照原来的顺序都存放在一个char数组中。当我们查找一个汉字的拼音首字母时,只需把这个汉字的unicode码(即char强制转换为int)减去19968,然后用这个数字作为索引去找char数组中存放的字母即可。比较野蛮的一个方法。
调用方法介绍
首先吧BMChineseSort.h及.m文件导入到项目中,只需要这两文件。对自定义对象数组排序需要只需要使用两类个方法:
+(NSMutableArray*)IndexWithArray:(NSArray*)objectArray Key:(NSString *)
+(NSMutableArray*)sortObjectArray:(NSArray*)objectArray Key:(NSString *)
第一个方法:一个参数objectArray是自定义对象数组,另一个参数key是数组里需要排序的字段名字。方法返回所有出现过的首字母,用于显示在tableview的head以及右侧索引缩写。第二个方法:,是根据对象的某个字段值对整个数组进行排序,首先,先将字段首字母拼音相同的对象存到同一个数组里,然后把所有的数组再放到结果数组里。
获得的两个数组在tableview代理方法中的具体使用可以参考我的demo,已上传到github。
具体tableView设置
Person对象:
@interface Person : NSObject
@property (strong , nonatomic) NSString *
@property (assign , nonatomic) NSI
通讯录控制器viewDidLoad方法:
// array是NSArray& Person *&类型的模拟数据
self.indexArray = [BMChineseSort IndexWithArray:array Key:@&name&];
self.letterResultArr = [BMChineseSort sortObjectArray:array Key:@&name&];
TableView代理方法:
//section的titleHeader
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [self.indexArray objectAtIndex:section];
//section行数
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return [self.indexArray count];
//每组section个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [[self.letterResultArr objectAtIndex:section] count];
//section右侧index数组
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{
return self.indexA
//点击右侧索引表项时调用 索引与section的对应关系
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{
//返回cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@&CELL&];
if (cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@&CELL&];
//获得对应的Person对象
Person *p = [[self.letterResultArr objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.textLabel.text = p.
BMChineseSort使用DemoIOS数组按中文关键字以字母序排序
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
简单实现iOS通讯录拼音分组排序相关信息,包括
的信息,所有简单实现iOS通讯录拼音分组排序相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
服务与支持
账号与支持
关注阿里云
International8被浏览5,068分享邀请回答97 条评论分享收藏感谢收起苹果园为iOS用户提供和下载,最新的、、、等,分享最权威的资讯、、及解决办法,拥有最火爆的,苹果园一家专注解决iOS所求的网站。苹果6s如何让通讯录不按字母排序_百度知道
苹果6s如何让通讯录不按字母排序
我有更好的答案
点击「添加字段」,依次添加好「名字拼音或音标」和「姓氏拼音或音标」,然后将拼音输入其中就完成了所有工序,点击右上角的「编辑」,划动到最下面,点开一个联系人给每个联系人的姓名标注拼音
采纳率:87%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。拒绝访问 | www.wangchao.net.cn | 百度云加速
请打开cookies.
此网站 (www.wangchao.net.cn) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3fbcd2-ua98).
重新安装浏览器,或使用别的浏览器}

我要回帖

更多关于 苹果通讯录拼音顺序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信