【发布时间】:2018-02-09 10:24:54
【问题描述】:
我正在构建一个严重依赖 CloudKit 作为数据源的 iOS 应用。
在安装应用程序并首次运行后,我需要下载大量数据,这些数据位于我的 CloudKit Container 的公共数据库中。我用CKFetchNotificationChangesOperation 做这个
每次我启动应用程序时都会运行此操作,以检查自上次收到服务器更改令牌以来的数据更改。显然,在应用程序第一次启动时,我必须提供的更改令牌为零,这将导致 CKFetchNotificationChangesOperation 加载数据库上曾经发生的所有更改。
然后返回的数据将存储在本地,因为我希望拥有与我的用户相关的所有数据的本地缓存。我将这些数据存储在核心数据数据库中。由于应用程序首次启动时需要的数据集可能很大,我确实需要 CKFetchNotificationChangesOperation 来获取服务器上的所有更改。\
然而,这似乎不可靠。使用我在数据库中输入的一些数据测试此服务时,我没有收到我应该收到的所有数据。
当我在公共数据库中输入更多数据时,CKFetchNotificationChangesOperation 似乎完全忽略了我之前输入的记录。有时,有些会通过,但非常不可靠。
显然,我已经验证了我的订阅是合法的(之前加载了相同的记录),并且我已经检查了 CKFetchNotificationChangesOperation 的 moreComing 参数是否为真(它始终是 false)
问题
我应该怎么做才能在初始加载时获取公共数据库中的所有数据?我认为CKFetchNotificationChangesOperation 应该完成这项工作,但它似乎不可靠。我可以在此操作上配置“范围”之类的东西以强制它加载我的所有数据吗?还是CKFetchNotificationChangesOperation 不适合初始加载,我应该只通过自定义操作加载我需要的所有数据吗?
【问题讨论】:
标签: ios notifications icloud cloudkit subscriptions