问题描述
@H_502_0@在CloudKit上的多个Apple WWDC谈话中,当使用CloudKit在设备之间同步私有用户数据时,当用户注销iCloud时,该应用程序应该清空设备上的缓存/本地副本(我使用Core Data设备上的永久性)。然后,当该用户(或实际上是任何用户)重新登录到同一设备上的相应iCloud帐户时,则该设备应从相应的iCloud帐户向下同步数据。有道理!
@H_502_0@我想知道当我使用NSPersistentCloudKitContainer(而不是自己编写所有CloudKit代码)时如何实现这一目标。我查看了与Apple WWDC 2019会话202有关的示例代码(“将核心数据与CloudKit一起使用”),而该代码不是我想要的(示例只是不关注iCloud帐户部分,这就是为什么他们不这样做)我想打扰清空缓存):确实,如果我注销用户,NSPersistentCloudKitContainer会停止同步,但是当我重新登录时,它将再次进行同步。这实际上更像所需的(实际上也很实际,这很好) )在我的网络连接离线一段时间后,示例应用程序的行为。
@H_502_0@但是,如果用户注销了iCloud(我使用CloudKit框架通知用户帐户注销和登录状态),那么我需要做的是:
- 从NSPersistentCloudKitContainer中“断开” sqlite存储,然后
- 清空(甚至删除)数据库,然后
- 当旧的(或另一个)用户登录时,初始化一个新的NSPersistentCloudKitContainer(它将重新创建一个空数据库,就像有史以来第一次使用该应用一样),因此可以继续与相应的Cloud数据库进行通信。 / li>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)