苹果提供的排序方法
NSArray *stringArr = @[@"我们",@"我的", @"重点", @"重庆", @"三"];
NSArray *result = [stringArr sortedArrayUsingSelector:@selector(localizedCompare:)];
字典当中的keyvalue 可以一个键对应一个数组。
对数据进行排列按首字母进行分组
这是苹果的方法
for ( modelAgreementCitizenItem *model in modelArr) {
//获取汉子的首字母
//把中文转拼音
NSMutableString *ms = [[NSMutableString alloc] initWithString:[model patientName]];
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {
NSLog(@"Pingying: %@", ms);
}
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {
NSLog(@"Pingying: %@", ms);
}
NSString *firstString = [[ms substringToIndex:1] uppercaseString];
NSMutableArray * arr = [self.nameDic objectForKey:firstString];
if (arr) {
[arr addObject:model];
}else{//如果没有 则需要创建一个添加到里面
[self.nameDic setObject:[@[model] mutableCopy] forKey:firstString];
}
}
}
这个方法使用起来比较慢 耗时较长
NSMutableArray *array = [[NSMutableArray alloc] init];
if(self.indexArr.count){
[self.indexArr removeAllObjects];
}
for(int i='A';i<='Z';i++)
{
NSMutableArray *rulesArray = [[NSMutableArray alloc] init];
NSString *str1=[NSString stringWithFormat:@"%c",i];
for(int j=0;j<modelArr.count;j++)
{
modelAgreementCitizenItem *model = [modelArr objectAtIndex:j]; //这个model 是我自己创建的 里面包含用户的姓名 手机号 和 转化成功后的首字母
if([[NSString getFirstLetter:model.patientName] isEqualToString:str1])
{
[rulesArray addObject:model]; //把首字母相同的人物model 放到同一个数组里面
[modelArr removeObject:model]; //model 放到 rulesArray 里面说明这个model 已经拍好序了 所以从总的modelArr里面删除
j--;
}else{
}
}
if (rulesArray.count !=0) {
[array addObject:rulesArray];
[self.indexArr addObject:[NSString stringWithFormat:@"%c",i]]; //把大写字母也放到一个数组里面
}
}
if (modelArr.count !=0) {
[array addObject:modelArr];
[self.indexArr addObject:@"#"]; //把首字母不是A~Z里的字符全部放到 array里面 然后返回
}
return array;
}