我有以下代码块:
sortedNameArray = [nameArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];我用它来获取字符串数组并按字母顺序排列。现在,我要做的是让它通过查看姓氏属性来按字母顺序排列Name对象(具有NSString firstName和NSString lastName的对象)的数组,然后按其lastName属性按字母顺序排列对象。下面是一个Name对象的示例:
Name *bobSmith = [[Name alloc] init];
[bobSmith setFirstName:@"Bob"];
[bobSmith setLastName:@"Smith"]; // this is what I want to alphabetize it by我试过了:
for (int i = 0; i < [nameArray count]; i++){
sortedNameArray = [[nameArray[i] getLastName] sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
}但这显然行不通。如何让此方法通过查看对象数组的一个字符串属性来按字母顺序排列对象数组...例如,获取一个Name对象数组,查看它们的姓氏(一个NSString),并根据此对对象进行字母排序?
发布于 2015-03-03 13:25:17
sortedNameArray = [nameArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[obj1 lastName] compare:[obj2 lastName]];
}];发布于 2015-03-03 13:28:10
您可以使用sortDescriptors按字母顺序排列Name对象的数组
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastname" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [nameArray sortedArrayUsingDescriptors:sortDescriptors];
nameArray =[NSMutableArray arrayWithArray:sortedArray];我从排序描述符编程主题中提取了代码。此外,键值编码也发挥了作用,因为sortedArrayUsingDescriptors:将向myArray中的每个元素发送一个valueForKey:,然后使用标准比较器对返回值进行排序。
https://stackoverflow.com/questions/28824600
复制相似问题