使用描述符数组比较2个对象

时间:2010-09-24 22:22:34

标签: nssortdescriptor

是否有一个函数使用NSSortDescriptor数组比较两个对象并返回NSComparisonResult? (将它们放在数组中将不会识别相等。)

2 个答案:

答案 0 :(得分:0)

您可以自己轻松编写该功能。只是迭代数组。棘手的设计决策是为什么当不同的比较器返回不同的结果时。例如。假设我们使用am阵列和两个比较器来比较法拉利和一大堆污垢:成本和尺寸。法拉利的成本更高,但污​​垢堆更大。我们说哪个是“更大”?这是您必须根据特定问题域做出的设计决策。

答案 1 :(得分:0)

这应该可以正常工作:

+ (NSComparisonResult)compareObject:(id)firstObject toObject:(id)secondObject withSortDescriptors:(NSArray<NSSortDescriptor *> *)sortDescriptors {
   NSComparisonResult result;
   NSUInteger index = 0;
   do {
       NSSortDescriptor *sortDescriptor = [sortDescriptors objectAtIndex:index];
       result = [sortDescriptor compareObject:firstObject toObject:secondObject];
       index += 1;
    } while (result == NSOrderedSame && index < sortDescriptors.count);

   return result;
}