2011-08-09 158 views
36

所以這是一個相對基本的問題,關於排序自定義對象的NSMutableArray的最佳方法。對對象的屬性排序NSMutableArray

我有一個NSMutableArray自定義對象,每個對象與NSStringNSDate一起去。我需要通過最新的對象(最新的對象NSDate)對數組進行排序,如果這是一個只包含NSDate的數組,我很確定我可以簡單地使用NSDate compare: NSDate,但由於我需要對所有對象進行排序,而不僅僅是日期,我不確定我是否可以使用該方法。

在僞代碼方面,我需要:查看單個對象,確定當前對象的NSDate是否是數組中的下一個最大值,如果是,請移動對象,而不僅僅是日期。

再一次,這是我甚至猶豫不決,因爲它是如此基本,但我不想寫一些非常低效的方法,如果有一個預先存在的類方法,將基本上做我想要的,搜索對象的子屬性數組,並根據子屬性對對象進行排序。

感謝您的任何幫助。

回答

79

NSSortDescriptors s使這非常簡單。隨着NSMutableArray您可以使用sortUsingDescriptors:現有數組排序,並與不變的陣列創建使用sortedArrayUsingDescriptors:

//This will sort by stringProperty ascending, then dateProperty ascending 
[mutable_array sortUsingDescriptors: 
@[ 
    [NSSortDescriptor sortDescriptorWithKey:@"stringProperty" ascending:YES], 
    [NSSortDescriptor sortDescriptorWithKey:@"dateProperty" ascending:YES] 
    ]]; 
+0

謝謝,這似乎只是什麼我在找! –

+0

看起來我應該也做了一些更多的研究,這個問題正是我的問題以及未來的任何人:http://stackoverflow.com/questions/6083408/sort-nsarray-of-custom-objects-by -their-nsdate-properties –

+0

非常感謝!那爲我做了魔術:) –

17

這個小片段很好工作的新數組對我來說:

[students sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]];