Core data RestKit/CoreData未将关系立即保存到永久存储

Core data RestKit/CoreData未将关系立即保存到永久存储,core-data,restkit,Core Data,Restkit,RestKit或CoreData是否有一些奇怪的上下文保存机制?我的意思是,我下载我的托管对象,如果我快速关闭应用程序并再次运行它,我会看到一些关系对象没有保存到持久存储。然而,当我在关闭应用程序之前等待10-15秒时,这些对象会被保存,我可以在再次运行应用程序时获取它们 那么它是如何工作的呢?在类似事务的操作中不保存对象(整个对象及其关系或什么都不保存)是正常的吗 也许我只是幸运地拥有了这15秒,而且在某些情况下,由于CoreData/RestKit/my代码中的某些错误,这些关系对象可能根本

RestKit或CoreData是否有一些奇怪的上下文保存机制?我的意思是,我下载我的托管对象,如果我快速关闭应用程序并再次运行它,我会看到一些关系对象没有保存到持久存储。然而,当我在关闭应用程序之前等待10-15秒时,这些对象会被保存,我可以在再次运行应用程序时获取它们

那么它是如何工作的呢?在类似事务的操作中不保存对象(整个对象及其关系或什么都不保存)是正常的吗

也许我只是幸运地拥有了这15秒,而且在某些情况下,由于CoreData/RestKit/my代码中的某些错误,这些关系对象可能根本不会被保存

我使用以下方式下载对象:

RKObjectManager *manager = [RKObjectManager sharedManager];
[manager getObjectsAtPath:@"/" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {

    NSLog(@"OK");
    [self saveContext];

} failure:^(RKObjectRequestOperation *operation, NSError *error) {
    NSLog(@"ERROR");
}];
并通过以下方式保存上下文:

[[RKManagedObjectStore defaultStore].mainQueueManagedObjectContext save:&err]; 

有什么帮助吗?

RestKit会在调用成功块之前为您保存上下文-您不需要显式保存

通过“杀死应用程序”,我猜你是在用Xcode停止它?这是一个完全的终止,任何还没有完全完成的事情都不会有机会终止。这是不现实的测试,你不应该太依赖它


如果您想确切地知道保存操作何时完成,请观察所发布的相应通知。

是否可以在主队列中显式执行保存操作?只是为了确定..保存时我正在检查[[NSThread currentThread]isMainThread],它总是等于YES。奇怪的是,主对象(顺序)已保存,但其子对象(项)未保存。