1

FetchResultController または ManagedObjectContext を使用した Core Data からの要素の取得の違いは何ですか??

1) フェッチ結果コントローラー

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext: managedObjectContext]]; 

NSSortDescriptor *sortDescriptorNameAscending = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorNameAscending,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorNameAscending release];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Lists"]; 

2) 管理オブジェクトコンテキスト

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Item"  inManagedObjectContext:managedObjectContext]]; 
NSError *error = nil; 
NSArray *items = [ managedObjectContext executeFetchRequest:request error:&error]; 
4

2 に答える 2

1

NSFetchedResultsControllerだけではなく を使用することの背後にあるポイントNSFetchRequestは、データの監視と、セクションを操作するときの便利なメソッドです。

だけを扱う場合NSFetchRequestは、セクションを自分で決定する必要があり、何かが変更されたときにデータを再取得する必要があります。

を処理するとNSFetchedResultsController、セクションが決定され、結果がキャッシュされ (そのデータに対する 2 回目の要求がほぼ瞬時に行われます)、NSTableView に便利なメソッドが提供されます。最後に、データが変更NSFetchedResultsControllerされると、 はデリゲートを通じて通知します。

これらの両方の内部データは同じになります。違いはそのデータの状態を管理することです。

于 2010-03-31T14:52:27.117 に答える
0

The NSFetchedResultsController object will tell you when the objects of your query change. Just provide a delegate object to receive the calls (see the doc for NSFetchedResultsControllerDelegate protocol). It also provide you with section management which is useful if you want to display the data in a table view.

于 2010-03-31T07:15:56.380 に答える