1

我的应用程序使用带有公共数据库的 CoreData+Cloudkit。
默认情况下,iCloud 与公共数据库的同步仅在启动时完成,然后每半小时完成一次。
由于我的应用程序需要更快的同步,所有用户都登录到 iCloud,并订阅了 iCloud 更改。因此,一个用户的 iCloud 修改会向所有其他用户发送通知。这行得通。

问题:

通知现在应该触发本地持久存储的更新,即 iCloud 插入或更新应该下载相应的 iCloud 记录,并将其插入或更新到持久存储中(不会发生删除)。

可能的解决方案:

  1. 我可以手动从 iCloud 下载记录,然后在托管上下文中插入或更新它。但是,插入将被视为新记录,并稍后作为副本上传到 iCloud。每个收到通知的用户都会有一个副本。虽然可以处理这样的欺骗(只有少数用户),但这并不那么优雅。

  2. 更好的是简单地触发重新镜像,因为无论如何都会在启动期间和每半小时完成一次。但我没有找到任何合理的方法来做到这一点。我发现了一个关闭和打开 iCloud 同步的建议(这应该会触发同步),但这给了我一个客户端错误(重新注册镜像代理)。我发现了另一个交换持久存储的建议(一个有 iCloud 镜像,一个没有),但在我看来,这对我的问题来说是一个可怕的黑客攻击。

我的问题:

使用 iCloud 更改更新本地存储的合理方法是什么?

4

1 回答 1

-1

目前,ck 公共数据库仅在启动时或大约 20 分钟后复制

于 2021-03-25T23:47:43.770 回答