RestKit / CoreData不会立即将关系保存到持久性存储中

时间:2013-12-27 15:24:46

标签: core-data restkit

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

那它是如何运作的?在类似事务的操作中保存对象是正常的(整个对象与其关系还是什么都没有)?

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

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

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]; 

任何帮助?

1 个答案:

答案 0 :(得分:2)

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

通过“杀死应用程序”我猜你是在Xcode中停止它?这是一个完全终止,任何尚未完成的东西都没有机会。这是不切实际的测试,你不应该基于它。

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