31

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

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

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

4

5 に答える 5

35

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

ユーザーに感謝するコードは次のとおりです。NSGod:

NSSortDescriptor *dateDescriptor = [NSSortDescriptor
                                 sortDescriptorWithKey:@"startDateTime" 
                                             ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
     sortedArrayUsingDescriptors:sortDescriptors];
于 2012-10-16T11:33:48.370 に答える
14
    NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
    [mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
于 2012-10-16T11:14:56.317 に答える
10

次を使用できます。

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

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

于 2012-10-16T11:14:14.630 に答える
1

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

例えば:

-(NSComparisonResult)compare:(YourClass*)otherObject
{
   return [self.date compare:otherObject.date];
}
于 2012-10-16T11:12:48.907 に答える
1

と呼ばれるメソッドがあり-[NSArray sortedArrayUsingComparator:]ます。オブジェクトに適していると思われる比較を実装できるブロックが必要です。

于 2012-10-16T11:15:22.743 に答える