2009年9月30日水曜日

CoreData - テーブルの件数を取得する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
(前回からの続き:Cocoa Touch の日々: CoreDataを使う

これから CoreData のデータを UITableView へ表示させる。UITableView へデータを表示するには最低2つの DataSourceメソッドを実装する必要がある。
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;


これらのメソッドを実装するにあたり、まずはテーブルの件数を取得しよう。

ネットで探してみると "Effecient way to count entities" という記事が見つかった。
(参考)Cocoa CoreData effiecient way to count entities! - Stack Overflow

これを参考に件数取得のコードを書いてみた(というかそのまんまだが)。

- (NSUInteger)getCount
{
NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Memo"
inManagedObjectContext:managedObjectContext]];
[request setIncludesSubentities:NO];

NSError* error = nil;
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&error];
if (count == NSNotFound) {
count = 0;
}
[request release];

return count;
}


managedObjectContext はメンバ変数として既に用意してあるものとする。
#NSError 変数は以前痛い目にあっているので必ず初期化しておく。



もし条件で絞り込みたい場合は Predicateなどが使える。
(参考)Cocoaの日々 - 2005年10月

0 件のコメント:

コメントを投稿