hachinoBlog

hachinobuのエンジニアライフ

NSDictionary形式で取得した2テーブルの同じカラムの値をソートしてマージする方法

//テーブルAとBにpriceカラムとnameカラムがあり、それぞれから2カラムをNSDictionaryで抽出したとする
NSArray *tableA = [self loadA]; //テーブルAから取得
NSArray *tableB = [self loadB]; //テーブルBから取得

//マージ
NSMutableSet *set = [[NSMutableSet alloc] init];
[set unionSet:[NSSet setWithArray:tableA]];
[set unionSet:[NSSet setWithArray:tableB]];

NSArray *merge = [set allObjects];
[set release];

//金額順に並び替え
NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"price.intValue" ascending:YES] autorelease];
merge = [merge sortedArrayUsingDescriptors:[NSArray arrayWithObject:descriptor]];

これでOK!
NSSetって便利だ!
CoreDataで使われているんだから当たり前か。

参考URL
http://fullfool.com/blog/?p=1213
http://ssdkfk.wordpress.com/2011/07/25/nsarray%E3%81%ABnsdictionary%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E6%99%82%E3%81%AE%E3%82%BD%E3%83%BC%E3%83%88%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8B%EF%BC%9F/