2011-09-12 15 views
3

同じ永続ストアコーディネータ(およびモデル)を使用して、シリアルGCDキューのセカンダリmanagedobjectcontextを使用しています。私が抱えている問題は、二次managedobjectmodelが空であるように見えることです。すべてのフェッチ要求は何も返しません。私はsqliteストアを使用しています。私は、メインスレッドで同じことを無駄にしようとしました。複数のNSManagedObjectContextの問題

コードはかなり簡単です。 CoreDataUtilityはシングルトンであり、シングルトンのmanageObjectContextメンバーは他のマネージオブジェクトコンテキストです。

NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] init]; 
    [managedObjectContext setPersistentStoreCoordinator:[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinator]; 

フェッチリクエスト(私はいくつか試しました)は、ママを除いて同じです。

セカンダリママはデバッガで正常に見えます。プライマリママで同じであると予想されるプロパティは実際は同じです。

答えて

0

問題は、モデルをロードしていたときのようになっていました。なぜこれがうまくいったのか説明がありませんが、問題を解決しました。たぶん誰かが解明することができます。

このコード:

managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; 

は、このコードに置き換えた:

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"mymodel" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 
managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
0

[CoreDataUtility instance].managedObjectContext.persistentStoreCoordinatorから返された永続的なストアコーディネータが正しい場合(これをチェックしましたか?)、この部分は少なくとも正常であるはずです。

自分のアプリで同様のアプローチを使用しています。バックグラウンドコンテキストを作成するためのコードは、メインコンテキストとまったく同じです。私はこの問題が他の場所にもあると思う。

NSManagedObject *backgroundObject = [backgroundContext existingObjectWithID:object error:&error]; 

そしてオブジェクトがまだ有効であれば見て:

は、メインコンテキスト内のオブジェクトにアクセスして、フォルトオブジェクトを使用して他のコンテキストにしようとしたことがありますか?

+0

私は最初のコンテキストで有効なオブジェクトを取得し、そのOBJECTIDを取得しようとすると、私は他のnullを取得コンテキスト。私は、同じ永続的なストアコーディネーターに、ママを作るために全く同じことをやっています。 – John

+0

その操作では、次のエラーが発生します。エラー:エラードメイン= NSCocoaErrorDomainコード= 133000 "操作を完了できませんでした。(ココアエラー133000) – John

+0

" mom "と言うとき、私はコンテキストではなく、モデルを意味すると思います。 – Stuart

関連する問題