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

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=[[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;

}




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

 self.stuArray=[Student findAll];

 

    self.tempA=[[NSMutableArray alloc]init];

    ChineseString *tempString1;

    NSString *sss;

    Student *student1;

    for (int i=0; i<[[ZhongWenPaiXu zhongWenPaiXu:stuArraycount]; 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:0name]);


最后下面用到数组用tempA代替。
另外说一下做通讯录遇到的问题。1。数据库删除方法delete from  。。。。中间没有*,星号。2,图片类型时用[imageData bytes] 转一下,3,还有[NSString stringWithUTF8String:(const char *) 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中处理汉字排序的问题。由于汉字不像英文字符那样可以直接按照字典顺序排序,因此需要额外的处理步骤。 首先,我们要理解...

    排序问题IOS

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

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

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

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

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

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

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

    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