我试图对一些数据进行排序以sortedArrayUsingDescriptors:在NSArray类中使用方法.
该方法必须指示标准比较器,但我想指出自定义比较器我做了什么.
有可能吗?
这是我的排序代码的一部分:
NSSortDescriptor *firstDescriptor =
[[[NSSortDescriptor alloc]
initWithKey:FIRSTNAME
ascending:YES
selector:@selector(CustomCompare:)] autorelease];
Run Code Online (Sandbox Code Playgroud)
CustomCompare: <=想要制作自定义比较器.
为什么不使用sortedArrayUsingComparator:和实现比较器不区分大小写?像这样的东西:
NSArray *sortedArray = [myArray sortedArrayUsingComparator:^(id o1, id o2) {
NSString *str1 = (NSString *)o1;
NSString *str2 = (NSString *)o2;
return [str1 compare:str2 options:NSCaseInsensitiveSearch];
}];
Run Code Online (Sandbox Code Playgroud)
更新
对于更复杂的类,也可以使用多个比较字段:
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;
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |