残りのフェッチと更新にMagicRecordを使用している間、現在のRestKitを使い続けたいと思います。RestkitのMOCがMagicRecordのデフォルトコンテキストに更新を送信するようにしたい。私が正しく理解していれば、これが私がしていることです。これでいい?
NSManagedObjectContext* context = [[RKObjectManager sharedManager].objectStore managedObjectContextForCurrentThread];
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:[XDBStore storeName]];
[context setParentContext:[NSManagedObjectContext MR_defaultContext]];
たぶんそれを行う別の方法ですが、それでもわかりません。
NSPersistentStoreCoordinator *coordinator = [[[RKObjectManager sharedManager] objectStore] persistentStoreCoordinator];
[NSPersistentStoreCoordinator MR_setDefaultStoreCoordinator:coordinator];
[NSManagedObjectContext MR_initializeDefaultContextWithCoordinator:coordinator];
誰かが以前に同じ問題を抱えていましたか?
編集1
@casademoraの提案#1を試してデフォルトのコンテキストを設定しようとしましたが、このエラーが発生しました。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can only use -performBlockAndWait: on an NSManagedObjectContext that was created with a queue.'
編集2
ハックを見つけました。まず、magicalrecordでデフォルトコンテキストのセッターを開きます。次に、RestKitストアの同時実行タイプを変更して、そのコンテキストをmagicalrecordで使用できるようにします。
NSManagedObjectContext + MagicalRecord.h
+ (void) MR_setDefaultContext:(NSManagedObjectContext *)moc;
+ (void) MR_setRootSavingContext:(NSManagedObjectContext *)context;
RKManagedObjectStore.m
NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
次に、MagicalRecordを次のように設定します。
NSManagedObjectContext* context = [[RKObjectManager sharedManager].objectStore managedObjectContextForCurrentThread];
[NSManagedObjectContext MR_setRootSavingContext:context];
NSManagedObjectContext *defaultContext = [NSManagedObjectContext MR_newMainQueueContext];
[defaultContext setParentContext:context];
[NSManagedObjectContext MR_setDefaultContext:defaultContext];