要清楚...... 我的目标: -
1. 向服务器发送删除请求(完成),我得到响应,但不确定它是否与核心数据DB同步。因此,我需要知道,如何使用Restkit从db中删除特定对象。
2。 ManagedObjectContext混淆 - 我对上下文和线程太困惑了。 我正在处理所有我在这种情况下的操作。 : - [RKObjectManager sharedManager] .managedObjectStore.mainQueueManagedObjectContext] 但我想继续处理Bg线程并在主线程上接收结果进行更新。 现在有一些儿童语境的概念。如何使用它对我来说是一个难题。
3. 如果我想使用多线程,使用Restkit和映射发出服务器请求。如何使用managedobjectcontext。 (我的意思是使用它的正确方法)
答案 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时,它会通知主线程的托管对象上下文以保存更改。