最善の策は、countForFetchRequest メソッドを使用することです。述語とフェッチ リクエストを設定しますが、実際のフェッチを行う代わりに、次のように countForFetchRequest を実行します。
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"Attribute1 == %@",
[NSNumber numberWithBool:YES]];
[request setPredicate:predicate];
NSUInteger count = [myManagedObjectContext countForFetchRequest:request error:nil];
詳細については、Apple API ドキュメントを参照してください。
countForFetchRequest:error: 特定のフェッチ要求が executeFetchRequest:error: に渡された場合に返されるオブジェクトの数を返します。
- (NSUInteger)countForFetchRequest:(NSFetchRequest )request error:(NSError * )error パラメータ request フェッチの検索条件を指定するフェッチ リクエスト。error フェッチの実行に問題がある場合、戻り時に問題を説明する NSError のインスタンスが含まれます。戻り値 executeFetchRequest:error: に渡された場合、特定のフェッチ要求が返すオブジェクトの数、またはエラーが発生した場合は NSNotFound。
提供状況 iOS 3.0 以降で利用可能です。NSManagedObjectContext.h で宣言