需要导入4个文件,分别是:ChineseString.h ChineseString.m pinyin.h pinyin.m 。这里写错了一个,不是pinyin.m而是pinyin.c 其他都对。
接着建一个类:ZhonWenPaiXu.m 里面写一个方法:作用是:传入一个中文的数组,返回一个排好顺序的数组。注意,由于这次项目是要对学生对象排序,是先把学生的名字排好顺序,再根据名字把学生排好,所以我是传一个学生的数组。返回一排好顺序的名字的数组。
+(NSMutableArray *)zhongWenPaiXu:(NSMutableArray *)newArray{
//中文排序。
NSMutableArray *chineseStringsArray=[NSMutableArray array];
for(int i=0;i<[newArray count];i++){
ChineseString *chineseString=[[ChineseString alloc]init];
chineseString.string=[NSString stringWithString:[[newArray objectAtIndex:i]name] ];
if(chineseString.string==nil){
chineseString.string=@"";
}
if(![chineseString.string isEqualToString:@""]){
NSString *pinYinResult=[NSString string];
for(int j=0;j<chineseString.string.length;j++){
NSString *singlePinyinLetter=[[NSStringstringWithFormat:@"%c",pinyinFirstLetter([chineseString.string characterAtIndex:j])]uppercaseString];
pinYinResult=[pinYinResult stringByAppendingString:singlePinyinLetter]; }
chineseString.pinYin=pinYinResult;
}else{
chineseString.pinYin=@"";
}
[chineseStringsArray addObject:chineseString];
}
//Step2输出
// NSLog(@"\n\n\n转换为拼音首字母后的NSString数组");
for(int i=0;i<[chineseStringsArray count];i++){
ChineseString *chineseString=[chineseStringsArray objectAtIndex:i];
NSLog(@"原String:%@----拼音首字母String:%@",chineseString.string,chineseString.pinYin); }
//Step3:按照拼音首字母对这些Strings进行排序
NSArray *sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"pinYin"ascending:YES]];
[chineseStringsArray sortUsingDescriptors:sortDescriptors];
//Step4输出
// NSLog(@"\n\n\n按照拼音首字母后的NSString数组");
for(int i=0;i<[chineseStringsArray count];i++){
ChineseString *chineseString=[chineseStringsArray objectAtIndex:i];
NSLog(@"原String:%@----拼音首字母String:%@",chineseString.string,chineseString.pinYin); }
// Step4:如果有需要,再把排序好的内容从ChineseString类中提取出来
NSMutableArray *result=[NSMutableArray array];
for(int i=0;i<[chineseStringsArray count];i++){
[result addObject:((ChineseString*)[chineseStringsArray objectAtIndex:i]).string]; }
//Step5输出
NSLog(@"\n\n\n最终结果:");
for(int i=0;i<[result count];i++){
NSLog(@"%@",[result objectAtIndex:i]);
} //程序结束
return chineseStringsArray;
}
self.stuArray=[Student findAll];
self.tempA=[[NSMutableArray alloc]init];
ChineseString *tempString1;
NSString *sss;
Student *student1;
for (int i=0; i<[[ZhongWenPaiXu zhongWenPaiXu:stuArray] count]; i++) {
tempString1=[[ZhongWenPaiXu zhongWenPaiXu:stuArray]objectAtIndex:i];
sss=tempString1.string;
student1=[Student findByName:sss];
NSLog(@"sss====%@",sss);
NSLog(@"sss====%@",student1.name);
[tempA addObject:student1];
}
NSLog(@"[[tempA objectAtIndex:0] name]====%@",[[tempA objectAtIndex:0] name]);
另外说一下做通讯录遇到的问题。1。数据库删除方法delete from 。。。。中间没有*,星号。2,图片类型时用[imageData bytes] 转一下,3,还有[NSString stringWithUTF8String:(const char *) sqlite3_column_text(stmt, 3)];后面的参数不能为空。
相关推荐
在iOS开发中,当涉及到中文数据的排序时,由于中文字符的复杂性,不能像英文那样简单地按照字典顺序进行排序。此时,我们需要引入特定的算法和库来处理中文字符的拼音转换,以便实现正确的排序。这篇内容将详细介绍...
在iOS开发中,处理中文字符的排序不能直接使用英文字符的排序方法,因为中文字符没有自然的字母顺序。为了解决这个问题,我们可以利用汉字的拼音表示来实现排序。标签"中文 排序 拼音 pinyin"提示我们需要关注的是...
这样,就可以利用英文字符串排序的规则,达到正确的汉字排序效果。"ZinkSortArray"工具就提供了这样的功能,它能够将汉字数组中的元素转换成对应的拼音,然后进行排序。 使用"ZinkSortArray"的步骤如下: 1. 引入...
- 多音字:中文中存在多音字,如“乐”,既可以读“lè”也可以读“yuè”。在处理时,可能需要根据上下文确定拼音。 - 非汉字字符:如果数组中混有非汉字字符,需要在处理时特别注意,避免影响排序结果。 - 数字...
在iOS开发中,拼音排序是一项常见的需求,尤其是在处理中文数据并需要按照汉字的拼音首字母进行展示时。本文将深入探讨如何在iOS应用中实现拼音排序,并提供相关的代码示例和资源。 首先,我们需要理解汉字与拼音...
在iOS开发中,经常需要对汉字或英文名称的数组进行排序和分组,以便于用户更方便地查找和浏览。这个任务通常涉及到Objective-C(OC)编程语言的使用,因此我们今天将深入探讨如何在iOS应用中实现这个功能。 首先,...
"ios-汉字排序.zip" 提供的资源可能是一个示例项目或库,用于演示如何在Objective-C或Swift中处理汉字排序的问题。由于汉字不像英文字符那样可以直接按照字典顺序排序,因此需要额外的处理步骤。 首先,我们要理解...
汉字排序,IOS中,汉字排序,经典论述不可错过
在iOS开发中,我们经常会遇到需要对汉字进行首字母排序的需求,例如在通讯录应用或者搜索功能中。标题提到的“iOS汉字按首字母排序的开源库”正是为了解决这个问题而设计的。这个库提供了方便的方法,使得开发者无需...
总的来说,这个项目提供了如何在iOS应用中实现通讯录联系人列表的实例,特别关注了中文姓名的正确排序。开发者通过学习此项目,可以了解到如何使用Contacts框架,以及如何优化用户体验,尤其是在处理中文数据时。
本话题主要关注如何实现一个功能,即`UITableView`中按照汉字或英文名字的首字母进行排序和分组,类似于我们常见的通讯录应用。这个功能的核心在于对数据进行排序和分组处理,然后用UITableView来展示。我们将探讨...
- 如果应用支持多语言,除了中文,还需要考虑其他语言的排序规则,例如英文名字的首字母排序。 通过上述步骤,我们可以实现一个类似手机通讯录的拼音排序功能。在实际开发中,还需要结合具体的项目需求和用户体验...
在iOS开发中,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者处理其他与文本相关的任务。"iOS汉字转拼音助手"是一个专门用于解决这一问题的工具类库。这个库能够高效地将中文字符串转化为对应的拼音表示,...
这个项目“IOS通讯录读取并按照拼音首字母排序”旨在实现这样一个功能:从用户的iPhone通讯录中获取联系人信息,并根据联系人的名字拼音的首字母进行排序,为后续添加搜索功能打下基础。以下是对这个知识点的详细...
在iOS开发中,构建一个高效的省市区地址选择器是一个常见的需求。这个地址选择器涉及到的主要技术点包括:获取首字母、遍历分组、字母排序以及字母索引。以下将详细解析这些知识点。 1. 获取首字母: 在iOS中,我们...
在iOS开发中,我们经常需要对包含汉字的数据进行排序,并且在显示时提供方便的字母索引,以便用户能够快速定位到目标内容。这个“ios 版实现汉字按字母排序(带索引的tableview)”的第三方文件提供了一个高效、易用的...
本文将深入探讨如何在iOS中实现“iOS获取通讯录按字母排序索引列表”的功能,主要涉及`AddressBook`框架的使用。 首先,我们需要了解`AddressBook`框架。这是Apple提供的一个核心库,用于访问和管理设备上的联系人...
在iOS开发中,为了实现应用中的数据以汉字首字母的英文顺序进行排序并展示,开发者通常会使用UITableView这一核心组件。这个"ios-根据汉字首字母英文顺序排序用tableview现实.zip"项目,旨在帮助开发者创建一个功能...
在iOS开发中,"iOSSorted排序"是一个常见的需求,特别是在处理中文字符串时。中文字符串排序相对于英文来说更为复杂,因为中文字符的排序规则不仅仅基于Unicode编码,还需要考虑到中文的拼音和笔画等因素。本知识点...