删除请求并将RESTkit与核心数据和线程同步

时间:2013-03-12 05:43:02

标签: ios restkit managedobjectcontext

要清楚...... 我的目标: -

1. 向服务器发送删除请求(完成),我得到响应,但不确定它是否与核心数据DB同步。因此,我需要知道,如何使用Restkit从db中删除特定对象。

2。 ManagedObjectContext混淆 - 我对上下文和线程太困惑了。  我正在处理所有我在这种情况下的操作。 : -  [RKObjectManager sharedManager] .managedObjectStore.mainQueueManagedObjectContext] 但我想继续处理Bg线程并在主线程上接收结果进行更新。 现在有一些儿童语境的概念。如何使用它对我来说是一个难题。

3. 如果我想使用多线程,使用Restkit和映射发出服务器请求。如何使用managedobjectcontext。 (我的意思是使用它的正确方法)

1 个答案:

答案 0 :(得分: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时,它会通知主线程的托管对象上下文以保存更改。