【问题描述】

最近使用iCloudkit实现多设备之间同步Core Data的能力。在开发过程中碰到了一个问题:在模拟器中,调用了fetch()方法,重新加载数据,但数据无变化;在真实手机中也复现了。

【解决方案】

第一步

在presistence.swift中的init()方法里,增加了:

container.viewContext.automaticallyMergesChangesFromParent = true

第二步

确认在Signing & Capabilities中,是否有Background Modes,并确认是否勾选了其中的Remote notifications
具体如下:

【结果】

真机:
在模拟器上,或者Cloud Dashboard中更新的数据,能在fetch后获取到最新的数据。

模拟器:
在其他地方更新的数据,无法通过直接调用fetch获取到。但是可以退到后台,然后重新打开之后调用fetch,会拉取到最新的数据。