2010-09-24 68 views

回答

0

你可以很容易地自己寫這個函數。只需遍歷數組。棘手的設計決定是爲什麼當不同的比較器返回不同的結果時。例如。比方說,我們正在比較一輛法拉利和一大堆污垢,使用兩種比較儀:成本和尺寸。法拉利的成本更高,但污​​垢堆積更大。我們說什麼是「更大」?這是您必須根據您的具體問題域進行的設計決策。

+0

A「內置」功能會更簡單的代碼,並且可以實現一些優化。至於你的例子,NSSortDescriptor中的選擇器將知道如何比較兩者。如果排序描述符本身是相互排斥的,我不會使用一個描述符數組。現在,我已經自己實現了這個功能,但我仍然想知道這樣的功能是否存在。謝謝回覆。 – 2010-09-25 07:54:35

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; 
}