我遇到了一些麻烦,我想知道是否有人可以提供一些指导.
我试图按以下顺序创建节标题:["推","忙","完成","取消"].
不幸的是,这个订单无法通过简单的"升序YES/NO"来实现......我必须添加一个自定义比较选择器......这样的事情......:
**"状态"映射到["推","忙","完成","取消"]
NSSortDescriptor *sortStates = [NSSortDescriptor sortDescriptorWithKey:@"states"
ascending:NO
selector:@selector(compareCustom:)];
Run Code Online (Sandbox Code Playgroud)
因此,我实现了一个"compareCustom"...然而,事实证明我无法实现自定义排序器,因为以下异常结果:
***由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'不支持的NSSortDescriptor选择器:compareCustom:'
作为参考,sortDate通过以下方式实现:
request.sortDescriptors = @[sortStates]
self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:context
sectionNameKeyPath:@"states"
cacheName:nil];
Run Code Online (Sandbox Code Playgroud)
所以看起来我无法实现一个返回NSComparisonResult的compareCustom?我觉得它应该是可能的......但我无法弄清楚如何.如果有人可以提供一些建议我会非常感激!
另外供参考,这是我的"compareCustom"方法
-(NSComparisonResult)compareCustom:(NSString *)anotherState {
if ([(NSString *)self isEqualToString:@"Push"] && [anotherState isEqualToString:@"Canceled"]) {
return NSOrderedDescending;
}
else if ([(NSString *)self isEqualToString:@"Push"] && [anotherState isEqualToString:@"Busy"]) {
return NSOrderedDescending;
}
else if ([(NSString *)self isEqualToString:@"Push"] && [anotherState isEqualToString:@"Finished"]) {
return NSOrderedDescending;
}
else if ([(NSString *)self isEqualToString:@"Push"] && [anotherState isEqualToString:@"Push"]) {
return NSOrderedSame;
}
else if ([(NSString …Run Code Online (Sandbox Code Playgroud)