0

さまざまなエンティティをコア データに保存しています。このデータにアクセスする必要があるたびに、コア データから読み取り、必要なエンティティを可変配列に割り当てています。

if (managedObjectContext == nil) 
{ 
    managedObjectContext = [(iForgetAppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext]; 
}
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSError *error = nil;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil)
{
    // Handle the error.
    NSLog(@"mutableFetchResults == nil");
}
[self setEventsArray:mutableFetchResults];
[eventsTableView reloadData];

問題は、アプリのさまざまなページからこのデータを取得していることです。

Core Data を使用する際のベスト プラクティスは何ですか? App Delegate にデータをロードし、そこに配列を割り当てるだけでよいでしょうか?

すべてのアドバイスは大歓迎です。

4

2 に答える 2

1

を使用NSFetchedResultsControllerすると、必要な機能が得られます。NSFetchedResultsControllerDelegate必ずプロトコルも使用してください。NSFetchRequestソートなどで検索を行うために使用します。

于 2012-07-12T13:48:26.603 に答える
1

可変アレイを使用したセットアップは、すでに悪い習慣です。コアデータは、並べ替え、フィルタリング、表示が可能で、可変配列よりもはるかに優れています。

NSFetchedResultsControllerを使用してデータを表示することを検討する必要があります。述語とソート記述子を使用して、フィルタリングとソートを行うことができます。このようなソリューションは、無限に堅牢でスケーラブルである必要があります。

保存に関する具体的な質問については、管理対象オブジェクトのコンテキストを使用して(クラス内に参照を保持するか、アプリデリゲートから参照を取得する)、そのデータをどこにでも保存できます。

于 2012-07-12T13:46:09.313 に答える