NSArray,NSMutableArrayを日付(NSDate)順にソートする方法
TempDataというクラスを持つNSArrayまたはNSMutableArrayクラスがあるとします。
TempDataクラスはNSDateクラスのeventDateをメンバとして持っているとします。
TempDataクラスにNSComparisonResultを返すメソッドを実装します。
ここではcompareDateという名前にしています。
- (NSComparisonResult)compareDate:(TempData *)data { return [data.eventDate compare:self.eventDate]; // return [self.eventDate compare:date.eventDate]; どちらにするかは昇順または降順にしたいかによって変わります }
そして今まで通りNSArray(NSMutableArray)に追加していきます。
ここではtempDataArrayという名前にします。
そしてsortedArrayUsingSelectorメソッドで引数に先ほどの比較用のメソッドを与えて呼び出します。
tempDataArray = [tempDataArray sortedArrayUsingSelector:@selector(compareDate:)];
これでソートされたNSArray(NSMutableArray)になります。
比較するための対象がNSDateじゃない場合でも同じように比較用のメソッドを実装し、比較の条件に合わせてNSComparisonResultを返せばOKです。
例えばメンバの数値(ここではNum)で比較するなら以下のようにします
- (NSComparisonResult)compareNum:(TempData *)data { if (self.num > data.num) { return NSOrderedAscending; } else if (self.sum < data.num) { return NSOrderedDescending; } else { return NSOrderedSame; } }