0

我正在尝试从服务器上的几个表中下载批量数据。

就我而言,有 16 张桌子。对于所有这些表,我将向服务器发出 10 个请求。这意味着我对相关表做了一些逻辑分组,但就像所有表都通过一种或另一种关系相互关联。

下载时需要考虑三种情况:

  1. 将数据保存到本地的每个表中。
  2. 管理插入对象之间的关系。
  3. 下载期间其中一个请求失败的处理情况,例如第 8 个请求失败。

对于每个响应,我将遵循这种方法:

  1. 在托管对象上下文中插入数据。
  2. 通过触发 NSPredicate 和关联相关对象来管理关系。
  3. 保存上下文。

如果响应失败,我有两种选择:

  1. 下次从失败的响应继续。
  2. 将所有保存的数据恢复到以前的状态。

第一种方法可能会导致一些数据不一致,所以我将采用第二种方法。

我知道如果未保存托管对象上下文,我们可以恢复更改,但是

如果保存了托管对象上下文,是否可以恢复更改?

我需要社区提供一些有用的答案。

请建议。

4

1 回答 1

1

如果保存了托管对象上下文,是否可以恢复更改?

保存后?也许吧,但这可能很棘手。如果你为你的网络操作设置一个单独的托管对象上下文,并给它一个NSUndoManager,你可以稍后告诉撤消管理器将所有内容回滚到以前的状态。

不过,在完成之前不保存更改会更简单。使用撤消管理器并没有太大帮助——存储所有撤消操作所需的内存至少会与保存所有未保存的更改直到完成之前的内存使用量相匹配。如果您正在处理单独的托管对象上下文(无论是子上下文还是完全独立的上下文),处理错误情况就像让 MOC 在不先保存更改的情况下被释放一样简单。

于 2013-02-07T19:04:31.760 回答