2011-11-05 63 views
0

當指定多個排序描述:多種排序描述

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:lastName, firstName, age, nil]; 

說姓氏,名字和年齡都是類型NSSortDescriptor,並有他們的名字暗示的密鑰。

我只是想了解當我這樣做會發生什麼。假設我有一些核心數據(例如人員列表),並使用這些排序描述符對其進行排序。它會嘗試先排列姓氏,然後如果姓氏是相同的,則嘗試按姓氏排序(只記錄姓氏相同的記錄),然後如果名字和姓氏相同,它會嘗試按年齡排序(僅限那些記錄),作爲最後的手段。或者它會按照姓氏的順序對列表進行排序,然後返回並按名字重新排序,然後再返回並按年齡對其進行排序?

回答

6

它做你想做的 - 第一個。我懷疑技術實現是如你所描述的那樣,但結果是一樣的。技術實現的一種方式就是對每一種方式進行直接排序,但是按相反順序(三級排序,然後是二級排序,然後進行初級排序)運行它們。這將產生你想要的結果的淨效果,並且不要求每種排序都要注意其他類型的排序,而是在主鍵上生成排序,由次鍵排序,子排序再次通過第三鍵。但是,數據庫能夠使用的排序方式可能會更有效。好消息是你不需要知道它是如何工作的 - 它只是。 :)

+0

完美,正是我所需要的。 –