私は2つの管理オブジェクトコンテキストを使用して、バックグラウンドで効率的に重要な大規模データセットを使用しています。私は、スレッド内で一度に1つのマネージオブジェクトコンテキストしか使用しないようにしています。コアデータ:管理対象オブジェクトの管理対象オブジェクトコンテキストなし
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];
[context setPersistentStoreCoordinator:[self persistentStoreCoordinator]];
MetricType *metricType = [self metricTypeForName:self.metricName fromContext:context];
NSLog(@"metric context %@", [metricType managedObjectContext]);
[self processDataInContext:context forMetric:metricType];
上記のコードでは、NSLogは私が使用しているmanagedObjectContextのアドレスを正しく表示します。次に、processDataInContextに進みます。これはjsonデータ配列を介在させてオブジェクトを追加するためのプライベートメソッドです。各オブジェクトは、MetricTypeとの関係を持ちます。
私は彼らに
metric.metricType = metricType;
を関連付けるために行くときしかし、私はエラーを取得:私はドンを確保してるにもかかわらず....異なるコンテキスト内のオブジェクト間の関係「metricType」を確立するために、不正な試みをこれをしないでください。
私は、この行の前にログ出力を行います。
NSLog(@"My Context %@", context);
NSLog(@"metric context %@", [metricType managedObjectContext]);
metricTypeコンテキストがnilを返します!
どうしたのですか?私はそれを否定しなかったし、これはその不平を言う理由であるようだ。
いいえ、何も起こっていません。標準のコアデータフェッチを使用してストアからオブジェクトをフェッチし、存在しない場合は標準のコアデータテクニックを使用して作成します。とにかく、私の答えは以下の通りです:私は文脈を再設定していました。 – bandejapaisa