2011-09-14 13 views
0

私は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を返します!

どうしたのですか?私はそれを否定しなかったし、これはその不平を言う理由であるようだ。

答えて

0

私はもちろん、文脈から私のmetricTypeオブジェクトを削除したと私はそれを再フェッチされなかったすべての50枚のレコードと呼ばれて

[context reset]; 

..wasを、それを考え出しました。

0

metricTypeを初期化する方法は不鮮明です。 [self metricTypeForName:fromContext:]は実際にMetricTypeインスタンスを返すために何をしますか? [[MetricType alloc] init]を使用して新しいMetricTypeを作成していますか?私はあなたが自動リリースプールで何かを返すと思う。

+0

いいえ、何も起こっていません。標準のコアデータフェッチを使用してストアからオブジェクトをフェッチし、存在しない場合は標準のコアデータテクニックを使用して作成します。とにかく、私の答えは以下の通りです:私は文脈を再設定していました。 – bandejapaisa

関連する問題