2013年8月16日金曜日

NSArrayのソート - オブジェクトのNSArrayのソート -

以下のMemberオブジェクトのarrayを名前(カナ)の昇順にソートしたsortedArrayを作成する。

@interface Member : NSObject
@property (nonatomic, copy) NSString    *memberId;          // ID
@property (nonatomic, copy) NSString    *name;              // 名前(カナ)
- (id)initWithMemberId:(NSString*)memberId name:(NSString*)name;
@end

@implementation Member
- (id)initWithMemberId:(NSString*)memberId name:(NSString*)name
{
    self = [super init];
    if (self) {
        self.memberId = memberId;
        self.name     = name;
    }
    return self;
}

- (NSString *)description
{
    return [NSString stringWithFormat:@"memberId(%@) name(%@)",
            self.memberId, self.name];
}
@end

名前(カナ)の昇順にソート

Member *member1 = [[Member alloc] initWithMemberId:@"A01" name:@"Tanaka"];
Member *member2 = [[Member alloc] initWithMemberId:@"A02" name:@"Yamada"];
Member *member3 = [[Member alloc] initWithMemberId:@"A03" name:@"Suzuki"];
Member *member4 = [[Member alloc] initWithMemberId:@"A04" name:@"Satou"];
NSMutableArray *array = [NSMutableArray arrayWithObjects:member1, member2, member3, member4, nil];
NSLog(@"%@", array);

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortedArray = [array sortedArrayUsingDescriptors:@[sortDescriptor]];
NSLog(@"%@", array);
NSLog(@"%@", sortedArray);

0 件のコメント:

コメントを投稿