私はこの問題に対して考えられるすべての可能な解決策を試すために何日も費やしましたが、何も機能していないようです。
私は次のようなバックグラウンドスレッドを実行します:
[MagicalRecord saveInBackgroundWithBlock:^(NSManagedObjectContext *localContext) {
Media *localMedia = [media inContext:localContext];
UIImage *image = localMedia.thumbnail;
dispatch_async(dispatch_get_main_queue(), ^{
[thumbnails setObject:image forKey:[NSNumber numberWithInt:i]];
[contentDict setObject:thumbnails forKey:@"MediaItems"];
[cell.entryView setNeedsDisplay];
});
}];
またはこのように:
dispatch_queue_t cellSetupQueue = dispatch_queue_create("com.Journalized.SetupTimelineThumbnails", NULL);
dispatch_async(cellSetupQueue, ^{
NSManagedObjectContext *newMoc = [[NSManagedObjectContext alloc] init];
NSPersistentStoreCoordinator *coordinator = [NSManagedObjectContext contextForCurrentThread].persistentStoreCoordinator;
[newMoc setPersistentStoreCoordinator:coordinator];
NSNotificationCenter *notify = [NSNotificationCenter defaultCenter];
[notify addObserver:self
selector:@selector(mergeChanges:)
name:NSManagedObjectContextDidSaveNotification
object:newMoc];
Media *localMedia = [media inContext:[NSManagedObjectContext contextForCurrentThread];
UIImage *image = localMedia.thumbnail;
dispatch_async(dispatch_get_main_queue(), ^{
[thumbnails setObject:image forKey:[NSNumber numberWithInt:i]];
[contentDict setObject:thumbnails forKey:@"MediaItems"];
[cell.entryView setNeedsDisplay];
});
}];
これらは両方とも、UIImageがnilオブジェクトとして返され、Cocoa Error 133000
。
念のため、バックグラウンドスレッドコードを1つおきに削除し、その直前にメインスレッドに保存しました。上記のコードをメインスレッドで実行することもできますが、UIがフリーズします。これらすべての努力にもかかわらず、上記のコードは毎回クラッシュします。
これを機能させるために何をすべきかわかりません。
編集:
私の質問は、具体的には、クラッシュせずにこれを機能させるにはどうすればよいですか?あるコンテキストのオブジェクトが別のコンテキストに存在しないという問題のようですが、どうすればそれらを別のコンテキストに存在させることができますか?