【问题标题】:RestKit/CoreData not saving relationships immediately to the persistent storeRestKit/CoreData 没有立即将关系保存到持久存储
【发布时间】:2013-12-27 15:24:46
【问题描述】:

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

有什么帮助吗?

【问题讨论】:

  • 你能在主队列中明确地执行保存操作吗?只是为了确定..
  • 保存时我正在检查 [[NSThread currentThread] isMainThread],它总是等于 YES。奇怪的是,主对象(订单)被保存了,而子对象(项目)却没有。

标签: core-data restkit


【解决方案1】:

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

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

如果您想确切了解保存操作何时完成,请注意发布的相应通知。

【讨论】:

    猜你喜欢
    • 2013-04-08
    • 2016-02-02
    • 2011-01-17
    • 2020-05-30
    • 2012-08-18
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多