gpt4 book ai didi

ios - 按第二个单词对 nsarray 进行排序。 (按 "firstname surname"类字符串数组中的姓氏)

转载 作者:可可西里 更新时间:2023-11-01 05:29:34 25 4
gpt4 key购买 nike

我有 nsarray 的字符串,如“fistname surname”。现在我想按第二个单词即姓氏对字符串数组进行排序。我用了这个方法

NSArray *sortedArray=[[teachersList allValues] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"After %@",sortedArray);

但它根据第一个单词对数组进行排序。

而且我也有元素或字符串,其中 firstname 仅表示第一个单词。

那么如何做到这一点呢?

编辑

@贾纳克尼尔马尔

我修改后的代码是:

while([resultSet next])
{
[teachersList setObject:[NSString stringWithFormat:@"%@ %@",[resultSet stringForColumn:@"first_name"],[resultSet stringForColumn:@"last_name"]] forKey:[resultSet stringForColumn:@"email_id"]];
[emailList addObject:[resultSet stringForColumn:@"email_id"]];
appDelegate.grade=[resultSet stringForColumn:@"grade"];

}

//NSArray *sortedArrays=[[teachersList allValues] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];


NSArray *sortedArray = [[teachersList allValues] sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *firstTeacher2ndWord = [[[[(Teacher*)a name] componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
NSString *secondTeacher2ndWord = [[[[(Teacher*)b name] componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
return [firstTeacher2ndWord compare:secondTeacher2ndWord];
}];

但是我遇到了以下错误

[__NSCFString 名称]: 无法识别的选择器发送到实例

最佳答案

你可以这样排序,

NSArray *sortedArray = [teacherList sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *firstTeacher2ndWord = [[[[(Teacher*)a name] componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
NSString *secondTeacher2ndWord = [[[[(Teacher*)b name] componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
return [firstTeacher2ndWord compare:secondTeacher2ndWord];
}];
//Assuming in above you have atleast 2 words in name
//i.e. objectAtIndex:1 doesn't fail or you need to put condition
//there according to your needs

假设您的模型结构如下,

@interface Teacher : NSObject

@property (nonatomic,strong) NSString *name;

@end

编辑

由于您的 [teacherList allValues] 将直接保存字符串值,因此您应该按如下方式编写

NSArray *sortedArray = [[teachersList allValues] sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString *firstTeacher2ndWord = [[[((NSString*)a) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
NSString *secondTeacher2ndWord = [[[((NSString*)b) componentsSeparatedByString:@" "] objectAtIndex:1] lowercaseString];
return [firstTeacher2ndWord compare:secondTeacher2ndWord];
}];

以上代码将以排序的方式直接为您提供所有值的数组。

关于ios - 按第二个单词对 nsarray 进行排序。 (按 "firstname surname"类字符串数组中的姓氏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20943714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com