1

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

4

2 回答 2

0

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

于 2010-09-24T22:27:59.867 回答
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;
}
于 2017-09-01T08:19:16.293 回答