2012/12/11更新

[XODE] CoreDataで保存したデータ件数を取得する方法

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日は、CoreDataを用いたデータ管理を行う際に、保存したデータ件数を取得する方法をブログに書きたいと思います。
ライトなネタですが、こんなやり方をするのかーと新発見だったので、ブログにも書きたいと思った次第です(*゚▽゚)ノ

画像


CoreDataでデータ件数を取得する方法

CoreDataでデータ件数を取得する為に、専用のメソッドが用意されています。
NSManagedObjectContext#countForFetchRequest:error:
上記APIは、引数にリクエストを渡して、その条件に合致する件数を得るというメソッドです。
詳細な説明は、以下APIリファレンスをご確認ください。
NSManagedObjectContext API Reference


具体的には、以下のように使います。
// 検索リクエストのオブジェクトを生成します。
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

// 対象エンティティを指定します。
NSEntityDescription *entity
  = [NSEntityDescription entityForName:@"SyncTask" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

// キャッシュサイズや上限を指定します。
[fetchRequest setFetchBatchSize:20];
[fetchRequest setFetchLimit:0];

// 検索条件を指定します。
NSPredicate *pred
  = [NSPredicate predicateWithFormat:@"isError = 0"];
[fetchRequest setPredicate:pred];

// ソート条件を指定します。
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"priority" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

// 上記リクエストを元に件数を取得します。
NSError *error = nil;
int count = [managedObjectContext countForFetchRequest:fetchRequest error:&error];

// エラーがあった場合には、エラー情報を表示する。
if (error) {
     NSLog("error occurred. error = %@", error);
}
NSFetchRequestの生成や設定情報は普通のselectと同じで、 呼び出すメソッドだけ変えると件数取得をすることが出来ます。便利ー(*゚▽゚)ノ



最後に

簡単な内容ですが、日本語記事が少なかったのでブログに記載してみました。
iPhoneアプリ開発者の誰かの役に少しでも立てば良いなぁ〜。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。