web-dev-qa-db-ja.com

オブジェクトの配列をNSDateプロパティで並べ替え

可能性のある複製:
カスタムオブジェクトを含むNSMutableArrayを並べ替える方法

NSDateプロパティにアクセスして、オブジェクトの配列をどのように並べ替えますか?

日付の配列で[mutableArray sortUsingSelector:@selector(compare:)];を使用できることはわかっていますが、配列内の各要素のNSDateプロパティにアクセスして、最も古い日付でオブジェクトを最新の日付に並べ替えることはできますか?

29
system

すべての答えをありがとう、私は私の問題を解決するこの答えに出くわしました。 NSGOdの答えを確認してください

これはユーザーに感謝するコードです:NSGod:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor
                                 sortDescriptorWithKey:@"startDateTime" 
                                             ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
     sortedArrayUsingDescriptors:sortDescriptors];
34
jarryd
    NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
14
Thomas

以下を使用できます。

   NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
        NSDate *first = [(Person*)a birthDate];
        NSDate *second = [(Person*)b birthDate];
        return [first compare:second];
    }];

またはこれを参照してください リンク

10
Daniel

カスタムクラスのcompareメソッドをオーバーライドして、カスタムクラスの2つのオブジェクトを比較し、オブジェクトの日付に従って適切なNSComparisonResultを返すことができます。

例えば:

-(NSComparisonResult)compare:(YourClass*)otherObject
{
   return [self.date compare:otherObject.date];
}
1

-[NSArray sortedArrayUsingComparator:]というメソッドがあります。それはあなたがあなたのオブジェクトに適していると思うどんな比較も実装できるブロックをとります。

1
waldrumpus