LoginSignup
6
5

More than 5 years have passed since last update.

NSArray内のオブジェクトでソートする

Posted at

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)を指定して呼び出せばソートできます。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5