NSDateプロパティにアクセスして、オブジェクトの配列をどのように並べ替えますか?
日付の配列で使用できることは知って[mutableArray sortUsingSelector:@selector(compare:)];
いますが、配列内の各要素のNSDateプロパティにアクセスし、オブジェクトを最も早い日付から最も遅い日付で並べ替える方法を教えてください。
NSDateプロパティにアクセスして、オブジェクトの配列をどのように並べ替えますか?
日付の配列で使用できることは知って[mutableArray sortUsingSelector:@selector(compare:)];
いますが、配列内の各要素のNSDateプロパティにアクセスし、オブジェクトを最も早い日付から最も遅い日付で並べ替える方法を教えてください。
すべての答えをありがとう、私は私の問題を解決したこの答えに出くわしました。NSGodの答えを確認してください
ユーザーに感謝するコードは次のとおりです。NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
次を使用できます。
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
または、このリンクを参照してください
カスタムクラスのcompareメソッドをオーバーライドして、カスタムクラスの2つのオブジェクトを比較し、オブジェクトの日付に従って適切なNSComparisonResultを返すようにすることができます。
例えば:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
と呼ばれるメソッドがあり-[NSArray sortedArrayUsingComparator:]
ます。オブジェクトに適していると思われる比較を実装できるブロックが必要です。