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];
任何帮助?
答案 0 :(得分:2)
RestKit在调用成功块之前为您保存上下文 - 您不需要显式保存。
通过“杀死应用程序”我猜你是在Xcode中停止它?这是一个完全终止,任何尚未完成的东西都没有机会。这是不切实际的测试,你不应该基于它。
如果您想确切知道保存操作何时完成,请观察发布的相应通知。