at_yasu's blog

ロード的なことを

NSPredicate と リレーション (NSPredicate and relationship)

AというテーブルとBというテーブルがあったとして、Aのkeyword は B と一対多の関連を持っているとする。

Bのtitleというフィールドは唯一だとし、Aを数件取り出す方法。

	NSFetchRequest *req = [[NSFetchRequest alloc] init];
	[req setFetchLimit:/* limit */];
	[req setFetchOffset:page * /* limit */];
	
	NSEntityDescription* ent = [NSEntityDescription entityForName:@"A"
                                               inManagedObjectContext: hogehoge.managedObjectContext];
	[req setEntity:ent];
	
	// where
	NSPredicate* pred = [NSPredicate predicateWithFormat:@"keyword.title == %@", keyword];
	[req setPredicate:pred];
	
	[req setEntity:ent];

	NSError* err = nil;
	NSArray* fetchResult = [hogehoge.managedObjectContext executeFetchRequest:req
                                                                            error:&err];

	[req release];