2011-08-09 6 views
36

これは、カスタムオブジェクトのNSMutableArrayをソートする最適な方法に関するかなり基本的な質問です。NSMutableArrayをオブジェクトのプロパティで並べ替える

カスタムオブジェクトのNSMutableArrayがあります。それぞれのオブジェクトには、NSStringNSDateが一緒になっています。私は最新のオブジェクト(最新のNSDate)で配列をソートする必要があります。これはちょうどNSDateの配列だったとすれば、私は単純にNSDate compare: NSDateを使うことができます。しかし、すべてのオブジェクトがソートされ、私はその方法を使用できるかどうかはわかりません。

擬似コードに関して、私は次のことをする必要があります:個々のオブジェクトを見て、現在のオブジェクトのNSDateが配列内で次に大きいかどうかを判断し、そうであれば、日付だけでなくオブジェクトを移動します。

これも基本的なので私も尋ねることは躊躇していましたが、本質的に私が望むことを実行する既存のクラスメソッドがあれば、非効率的な方法を書いてみたいオブジェクトのサブプロパティの配列。サブプロパティに従ってオブジェクトをソートします。

ありがとうございました。

答えて

79

NSSortDescriptorsこれは本当に簡単です。 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]]]; 
関連する問題