Ios 如何对UIColor对象的NSArray进行排序

Ios 如何对UIColor对象的NSArray进行排序,ios,objective-c,sorting,uicolor,Ios,Objective C,Sorting,Uicolor,我编写了一个类,它有一个UIColor类型的属性color。如何根据color属性对包含少数类实例的NSArray进行排序?我尝试了下面的代码,但得到一个错误:[UICachedDeviceRGBColor compare:]:无法识别的选择器已发送到实例。对UIColor对象进行排序的最佳方法是什么 NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"color" ascending:YES]; array = (NS

我编写了一个类,它有一个UIColor类型的属性color。如何根据color属性对包含少数类实例的NSArray进行排序?我尝试了下面的代码,但得到一个错误:[UICachedDeviceRGBColor compare:]:无法识别的选择器已发送到实例。对UIColor对象进行排序的最佳方法是什么

NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"color" ascending:YES];
array = (NSMutableArray*)[array sortedArrayUsingDescriptors:@[sort]];

您需要使用比较器返回一种颜色是否大于另一种颜色

NSSortDescriptor *sort = [[NSSortDescriptor alloc]initWithKey:@"color" ascending:YES comparator:^(id obj1, id obj2) {

    if (do some math to determine which color is the bestest) {
        return (NSComparisonResult)NSOrderedAscending;
    }else{
        return (NSComparisonResult)NSOrderedDescending;
    }

}];

嗯,是红色<绿色还是绿色<红色?认真地说,您认为应该如何排序?要使用您发布的代码,您需要在
UIColor
类上创建自己的类别,并实现
compare:
方法来比较两个
UIColor
对象。所以下一个问题是-对两种颜色进行排序意味着什么?从数学上说:颜色的合理排序意味着从三维RGB颜色空间到某个真实间隔的连续函数。你可以很容易地证明这样一个函数是不存在的。你的问题可能重复的答案如下: