我尝试对某些数据进行排序,以便在sortedArrayUsingDescriptors:
类中使用NSArray
方法。
该方法必须指示标准比较器,但我想指出自定义比较器我做了什么。
有可能吗?
以下是我的排序代码的一部分:
NSSortDescriptor *firstDescriptor =
[[[NSSortDescriptor alloc]
initWithKey:FIRSTNAME
ascending:YES
selector:@selector(CustomCompare:)] autorelease];
CustomCompare:
< =想制作自定义比较器。
答案 0 :(得分:5)
为什么不使用sortedArrayUsingComparator:
并将比较器实现为不区分大小写?像这样:
NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(id o1, id o2) {
NSString *str1 = (NSString *)o1;
NSString *str2 = (NSString *)o2;
return [str1 compare:str2 options:NSCaseInsensitiveSearch];
}];
<强>更新强>
对于更复杂的类,也可以使用多个比较字段:
NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(id o1, id o2) {
MyClass *cl1 = (MyClass *)o1;
MyClass *cl2 = (MyClass *)o2;
NSComparisonResult result = [cl1.primaryString compare:cl2.primaryString options:NSCaseInsensitiveSearch];
if (result == NSOrderedSame) {
result = [cl1.secondaryString compare:cl2.secondaryString options:NSCaseInsensitiveSearch];
}
return result;
}];