2014-12-03 70 views
1

在我的应用我使用RestKit v0.23.3,我需要调用4个Web服务顺序。我正在做这个没有任何问题,可以在网上找到各种教程。Restkit和核心数据回滚

我的问题是,我需要确保下载所有4个服务或数据可能不一致。

现在我的问题:如果其中一个Web服务在下载/映射操作期间失败,我可以在CoreData上进行回滚吗?还是有一种模式可以禁用RestKit具有的“自动保存到持久性存储”功能,并且只有在最后一次Web服务结束时才“手动”保存?

在此先感谢您的帮助。

+0

您是否尝试过使用NSUndoManager?尽管根据我的经验,NSUndoManager并不总是可靠的。 – 2014-12-04 05:13:58

+0

还没有,但我可以试一试,我感谢你的意见。无论如何,我可以看到的唯一可靠的方式是通过NSDictionary,而不是直接将对象映射到CoreData实体,但我真的不知道这是否是最佳做法。 – Danno 2014-12-04 08:07:16

回答

0

如果这是真的需要那么我会倾向于使用基于磁盘的解决方案 - 在你开始之前的任何潜在的破坏性/破坏操作可以确保所有内容将保存并在磁盘上的数据存储的副本(注即可能需要保存多个文件才能最好使用API​​,如 migratePersistentStore:toURL:options:withType:error:)。现在,如果您遇到问题,可以将Core Data堆栈关闭,从磁盘中恢复,然后重新创建堆栈。这比尝试防止保存或使用撤销管理器更安全可靠,因为加载过程在多个线程中运行,所以您确实需要保存才能运行。

+0

这听起来很好的解决方案,适用于不经常发生的服务调用中发生的不经常更改。 – 2014-12-04 10:11:26