0

コア データに 3 つのエンティティが保存されています。これらをアプリのいくつかのView Controllerにロードしています.3つすべてからデータをロードすることもあります.以下は、このデータをロードして配列に割り当てる方法です. 配列に入ったら、アプリの現在のページに応じて、並べ替え、フィルター、カウント、または必要なことを何でも行います。

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

私が抱えている問題は次のとおりです。

  • 重複したコードをたくさん持つのは好きではありません。これは、コア データが必要なすべてのビュー コントローラーに表示されます。
  • 1 つのエンティティから、画像のバイナリ データを保存していますが、そのデータを読み込むときに遅延が発生しています

それで、次のような条件を使用してコアデータからロードする方法はありますかeventId = [NSString stringWithFormat:@"%@", currentEventId]

OR (そしておそらくより適切) には、アプリの起動時にデータをロードする別のクラスがあります。次に、(ロードされたデータの) クラス配列にアクセスして、現在のページに使用できます。オブジェクトを保存、編集、または削除する場合は、データをリロードするだけです。

どんな助けでも大歓迎です。

4

1 に答える 1

1
  1. 最初の質問から、 RubyonRailsのアクティブレコードをCoreDataにもたらすMagicalRecordを確認する必要があります。コアデータコードを短縮してクリアします。

  2. 画像が小さくない場合は、メインエンティティとの関係を持つ別のエンティティに画像を保存する必要があることに注意してください。これは、明示的に要求した場合にのみ関係を介して画像をロードするため、ラグの問題に役立つはずです。Marcus Zarra(コアデータに関するすばらしい本を書いた)の答えをここで見ることができます。画像がコアデータに対して大きすぎるというオプションは常にあります。

それが役に立てば幸い

于 2012-07-19T18:13:18.603 に答える