我开发了基于核心数据的应用程序,并在iCloud 13中引入它之后实现了iOS同步功能。
我启用了iCloud工具包,使用了NSPersistentCloudKitContainer
而不是NSPersistentContainer
,并添加了几行代码与iCloud同步核心数据。
同步工作得很好。问题是,当我卸载应用程序并重新安装应用程序时,它并不是第一次获取iCloud数据。我必须重新启动应用程序或打开另一个屏幕,才能让核心数据与iCloud同步。我是否可以检查核心数据是否与iCloud同步,或者等待它完成同步?
谢谢。
发布于 2020-06-03 05:48:01
没有公开用于使所有CKRecord与NSManagedObject同步的完成处理程序的API。
此外,更新是使用背景无声通知,所以我们可以期待任何时候的变化。所以没有完成处理程序是件好事。
下一步是什么
您可以创建一个属性来检查同步时间,就像last sync happened to local record
和检查iCloud中相同记录的lastModificationDate
(默认情况下CKRecord具有此属性)的日期一样。
因此,每次启动应用程序时,如果需要更新,请手动检查所有记录,然后等待更新通知并继续检查同步状态。
注意:如果任何其他设备的用户非常活跃,并且新记录正在被插入或修改,这可能会导致延迟启动过程。
发布于 2020-09-11 08:15:17
目前,还没有为iCloud同步完成提供API。你能做的就是
您还可以监听本地存储中的远程更改,并相应地更新UI,如本Apple:https://developer.apple.com/documentation/coredata/consuming_relevant_store_changes中所述
发布于 2022-12-01 05:37:06
我必须重新启动应用程序或打开另一个屏幕,才能让核心数据与iCloud同步。
为了解决这个问题,我使用了一个NSManagedObjectContextObjectsDidChange
事件的通知观察者。
当重新安装的应用程序第一次打开时,它显示为空屏幕,过了一段时间,当数据被同步时,通知被触发,页面被重新加载数据。
然而,当数据被同步时,我也找不到任何方法来等待和显示加载消息。
https://stackoverflow.com/questions/60928628
复制相似问题