NSArrayで独自のオブジェクトを保持していて、そのオブジェクトのメンバーでソートする方法です。
例えば、Item内のNSDateでソートする場合は、、、
Item.h
#import <Foundation/Foundation.h>
@interface Item : NSObject
@property (strong, nonatomic) NSString *text1;
@property (strong, nonatomic) NSDate *date1;
- (NSComparisonResult)comparWithDate:(Item *)item;
@end
Item.m
#import "Item.h"
@implementation Item
- (NSComparisonResult)comparWithDate:(Item *)item
{
NSComparisonResult result = [self.date1 compare:item.date1];
// 日付の降順でソート
switch(result){
case NSOrderedAscending:
result = NSOrderedDescending;
break;
case NSOrderedDescending:
result = NSOrderedAscending;
break;
case NSOrderedSame:
break;
}
return result;
}
@end
NSComparisonResultを返す比較メソッド(comparWithDate)を定義、実装します。
で、Itemを保持しているNSArrayで、
Hoge.m
// 日付の降順でソート
itemArray = [itemArray sortedArrayUsingSelector:@selector(comparWithDate:)];
sortedArrayUsingSelectorで、Itemで定義した比較用のメソッド(comparWithDate)を指定して呼び出せばソートできます。