【发布时间】:2023-03-21 17:10:01
【问题描述】:
我使用 CoreData 来管理我的应用程序数据模型。我在编辑视图控制器中使用子托管对象上下文,以便我可以保存或丢弃用户所做的更改。
我按如下方式创建子上下文:
NSManagedObjectContext* mainMoc = <my main context>;
NSManagedObjectContext* editMoc = [[NSManagedObjectContext alloc] init];
editMoc.parentContext = mainMoc;
如果用户点击“完成”按钮,我保存更改如下:
[editMoc save:&error]
如果用户点击“取消”,我将丢弃 editMoc 上下文。
这是一个问题: 我在整个应用程序中使用状态保存和恢复,当应用程序进入后台时,我想保存带有更改的 editMoc 上下文以进一步恢复。我不想将 editMoc 与 mainMoc 合并,因为用户尚未决定是保存还是放弃更改。
我尝试使用 NSCoding 协议对 editMoc 进行序列化,但是注册的对象并没有以这种方式保存。 我也尝试更改 parentContext,但这会引发异常。
我相信应该有一个很好的方法来完成上述任务,因为使用子上下文和状态保存是一种常见的做法。
我的项目在 iOS 6.0 及更高版本上运行。
【问题讨论】:
标签: core-data nsmanagedobject nsmanagedobjectcontext nscoding uikit-state-preservation