11、Core Data 上下文更改合并与不同设置的优劣势分析

Core Data 上下文更改合并与不同设置的优劣势分析

1. 上下文更改合并

在多上下文环境中,将一个上下文的更改合并到另一个(或多个)上下文相对简单,具体步骤如下:
1. 添加 Core Data 的 context-did-save 通知的观察者。
2. 在观察者代码中,使用 perform 调度到目标上下文的队列。
3. 在该队列上调用 mergeChanges(fromContextDidSave:) 方法,并将通知作为参数传入。

在合并过程中,Core Data 会从通知中的对象提取对象标识符,因为对象只能在其自身上下文的队列上访问。目标上下文获取对象 ID 列表后,将按以下方式处理更改:
- 插入对象 :插入的对象将被作为故障(fault)引入上下文。若无人对插入对象持有强引用,这些故障将在合并后被释放。不过,在监听 objects-did-change 通知时,你有机会保留这些对象。
- 更新对象 :上下文中已注册的更新对象将被刷新,其他更新将被忽略。若更新对象在目标上下文中有未决更改,更改将逐属性合并,冲突时目标上下文的更改优先。
- 删除对象 :上下文中已注册的删除对象将被移除,其他删除将被忽略。若删除对象在目标上下文中有未决更改,仍将被删除。若你正在使用该对象,需相应处理,避免异常。

合并完成后,会调用 processPendingChanges

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值