0

明確にするために...私の目的:-

1.サーバーに削除要求を送信します (完了)。応答はありますが、コア データ DB と同期されているかどうかはわかりません。したがって、Restkit を使用してデータベースから特定のオブジェクトを削除する方法を知る必要があります。

2. ManagedObjectContext の混乱 -- コンテキストとスレッドがあまりにも混乱しています。私はすべての操作でこのコンテキストをどこでも使用しています。:- [RKObjectManager sharedManager].managedObjectStore.mainQueueManagedObjectContext] しかし、Bg スレッドで処理を維持し、メイン スレッドで結果を受け取って更新したいと考えています。現在、子コンテキストの概念があります。使い方は今のところパズルです。

3.マルチスレッドを使用したい場合は、Restkit とマッピングを使用してサーバー リクエストを作成します。managedobjectcontext の使用方法。(正しい使い方という意味です)

4

1 に答える 1

0

以下のコードを使用して、マルチスレッドで NSManagedObjectContext を管理できます

- (void)mergeChanges:(NSNotification*)notification
{
    NSLog(@"[mergeChanges] enter");
    // save changes to manageObjectContext on main thread
    AppDelegate *theDelegate = [[UIApplication sharedApplication] delegate];
    [[theDelegate managedObjectContext] performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
                                                         withObject:notification
                                                      waitUntilDone:YES];
    NSLog(@"[mergeChanges] leave");
}

- (NSManagedObjectContext*)startThreadContext
{
    AppDelegate *theDelegate = [[UIApplication sharedApplication] delegate];
    NSManagedObjectContext *newMoc = [[NSManagedObjectContext alloc] init];
    [newMoc setPersistentStoreCoordinator:[theDelegate persistentStoreCoordinator]];

    // Register for context save changes notification
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(mergeChanges:)
                                                 name:NSManagedObjectContextDidSaveNotification
                                               object:newMoc];

    return newMoc;
}

- (void)stopThreadContext:(NSManagedObjectContext*)context
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:NSManagedObjectContextDidSaveNotification
                                                  object:context];
}

スレッドコンテキストの先頭で呼び出すことができます

-(NSManagedObjectContext*)startThreadContext

スレッドで新しい NSManagedObjectContext を使用すると、スレッドが終了したら NSManagedObjectContext を削除できます。新しい NSManagedObjectContext を保存するたびに、メイン スレッドのマネージド オブジェクト コンテキストに変更を保存するよう通知します。

于 2013-03-12T06:14:52.247 に答える