`
zjjzmw1
  • 浏览: 1369019 次
  • 性别: Icon_minigender_1
  • 来自: 开封
社区版块
存档分类
最新评论

iOS中文排序

    博客分类:
  • iOS
ios 
阅读更多

iOS中文排序

需要导入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=[[NSString stringWithFormat:@"%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 = [NSArrayarrayWithObject:[NSSortDescriptorsortDescriptorWithKey:@"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=[NSMutableArrayarray];

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;

}

 
 
 
最后在ViewDidLoad和ViewWillAppear 里添加以下代码就行了。

self.stuArray=[StudentfindAll];

 

self.tempA=[[NSMutableArrayalloc]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]====%@",[[tempAobjectAtIndex:0] name]);

 
最后下面用到数组用tempA代替。
另外说一下做通讯录遇到的问题。1。数据库删除方法delete from 。。。。中间没有*,星号。2,图片类型时用[imageData bytes] 转一下,3,还有[NSStringstringWithUTF8String:(constchar *) sqlite3_column_text(stmt, 3)];后面的参数不能为空。
4,用到uinavigation的时候,推到下一个页面时候不应该释放,如果释放了回来的时候就出错了。5,选取图片的时候,按钮的方法,一定要声明,否则也出错。
分享到:
评论

相关推荐

    iOS 中文排序所需头文件

    在iOS开发中,当涉及到中文数据的排序时,由于中文字符的复杂性,不能像英文那样简单地按照字典顺序进行排序。此时,我们需要引入特定的算法和库来处理中文字符的拼音转换,以便实现正确的排序。这篇内容将详细介绍...

    ios 中文 排序

    在iOS开发中,处理中文字符的排序不能直接使用英文字符的排序方法,因为中文字符没有自然的字母顺序。为了解决这个问题,我们可以利用汉字的拼音表示来实现排序。标签"中文 排序 拼音 pinyin"提示我们需要关注的是...

    iOS汉字数组排序

    这样,就可以利用英文字符串排序的规则,达到正确的汉字排序效果。"ZinkSortArray"工具就提供了这样的功能,它能够将汉字数组中的元素转换成对应的拼音,然后进行排序。 使用"ZinkSortArray"的步骤如下: 1. 引入...

    IOS中文排序

    - 多音字:中文中存在多音字,如“乐”,既可以读“lè”也可以读“yuè”。在处理时,可能需要根据上下文确定拼音。 - 非汉字字符:如果数组中混有非汉字字符,需要在处理时特别注意,避免影响排序结果。 - 数字...

    IOS拼音排序

    在iOS开发中,拼音排序是一项常见的需求,尤其是在处理中文数据并需要按照汉字的拼音首字母进行展示时。本文将深入探讨如何在iOS应用中实现拼音排序,并提供相关的代码示例和资源。 首先,我们需要理解汉字与拼音...

    IOS根据汉字(或英文)按字母排序并按首字母分组

    在iOS开发中,经常需要对汉字或英文名称的数组进行排序和分组,以便于用户更方便地查找和浏览。这个任务通常涉及到Objective-C(OC)编程语言的使用,因此我们今天将深入探讨如何在iOS应用中实现这个功能。 首先,...

    ios-汉字排序.zip

    "ios-汉字排序.zip" 提供的资源可能是一个示例项目或库,用于演示如何在Objective-C或Swift中处理汉字排序的问题。由于汉字不像英文字符那样可以直接按照字典顺序排序,因此需要额外的处理步骤。 首先,我们要理解...

    UItableview sort 分组IOS根据汉字(或英文)按字母排序

    本话题主要关注如何实现一个功能,即`UITableView`中按照汉字或英文名字的首字母进行排序和分组,类似于我们常见的通讯录应用。这个功能的核心在于对数据进行排序和分组处理,然后用UITableView来展示。我们将探讨...

    排序问题IOS

    汉字排序,IOS中,汉字排序,经典论述不可错过

    iOS汉字按首字母排序的开源库

    在iOS开发中,我们经常会遇到需要对汉字进行首字母排序的需求,例如在通讯录应用或者搜索功能中。标题提到的“iOS汉字按首字母排序的开源库”正是为了解决这个问题而设计的。这个库提供了方便的方法,使得开发者无需...

    iOS通讯录联系人列表较完整(中文排序)

    总的来说,这个项目提供了如何在iOS应用中实现通讯录联系人列表的实例,特别关注了中文姓名的正确排序。开发者通过学习此项目,可以了解到如何使用Contacts框架,以及如何优化用户体验,尤其是在处理中文数据时。

    ios-A-Z 拼音排序.zip

    - 如果应用支持多语言,除了中文,还需要考虑其他语言的排序规则,例如英文名字的首字母排序。 通过上述步骤,我们可以实现一个类似手机通讯录的拼音排序功能。在实际开发中,还需要结合具体的项目需求和用户体验...

    iOS 汉字转拼音助手

    在iOS开发中,有时我们需要将汉字转换为拼音,以便进行搜索、排序或者处理其他与文本相关的任务。"iOS汉字转拼音助手"是一个专门用于解决这一问题的工具类库。这个库能够高效地将中文字符串转化为对应的拼音表示,...

    IOS通讯录读取并按照拼音首字母排序

    这个项目“IOS通讯录读取并按照拼音首字母排序”旨在实现这样一个功能:从用户的iPhone通讯录中获取联系人信息,并根据联系人的名字拼音的首字母进行排序,为后续添加搜索功能打下基础。以下是对这个知识点的详细...

    iOS省市区地址选择器:包含1.获取首字母 2.遍历分组 3.字母排序 4.字母索引等

    在iOS开发中,构建一个高效的省市区地址选择器是一个常见的需求。这个地址选择器涉及到的主要技术点包括:获取首字母、遍历分组、字母排序以及字母索引。以下将详细解析这些知识点。 1. 获取首字母: 在iOS中,我们...

    ios 版实现汉字按字母排序(带索引的tableview)

    在iOS开发中,我们经常需要对包含汉字的数据进行排序,并且在显示时提供方便的字母索引,以便用户能够快速定位到目标内容。这个“ios 版实现汉字按字母排序(带索引的tableview)”的第三方文件提供了一个高效、易用的...

    iOS获取通讯录按字母排序索引列表

    本文将深入探讨如何在iOS中实现“iOS获取通讯录按字母排序索引列表”的功能,主要涉及`AddressBook`框架的使用。 首先,我们需要了解`AddressBook`框架。这是Apple提供的一个核心库,用于访问和管理设备上的联系人...

    ios-根据汉字首字母英文顺序排序用tableview现实.zip

    在iOS开发中,为了实现应用中的数据以汉字首字母的英文顺序进行排序并展示,开发者通常会使用UITableView这一核心组件。这个"ios-根据汉字首字母英文顺序排序用tableview现实.zip"项目,旨在帮助开发者创建一个功能...

    iOSSorted排序

    在iOS开发中,"iOSSorted排序"是一个常见的需求,特别是在处理中文字符串时。中文字符串排序相对于英文来说更为复杂,因为中文字符的排序规则不仅仅基于Unicode编码,还需要考虑到中文的拼音和笔画等因素。本知识点...

Global site tag (gtag.js) - Google Analytics